Skip to content

Commit 6eda90c

Browse files
committed
Merge branch 'master' of github.com:doocs/leetcode
2 parents 24d87a9 + 1b222d7 commit 6eda90c

File tree

26 files changed

+678
-9
lines changed

26 files changed

+678
-9
lines changed

solution/0012. Integer to Roman/Solution.java

Lines changed: 0 additions & 9 deletions
This file was deleted.

solution/0012.Integer to Roman/Solution.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@ public String intToRoman(int num) {
77
return M[num / 1000] + C[(num % 1000) / 100] + X[(num % 100) / 10] + I[num % 10];
88
}
99
}
10+

solution/0018.4Sum/Solution.cpp

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
class Solution {
2+
public:
3+
vector<vector<int>> fourSum(vector<int>& nums, int target) {
4+
int len = nums.size();
5+
vector<vector<int>> ans;
6+
if(len < 4)return ans;
7+
sort(nums.begin(),nums.end());
8+
9+
int left;
10+
int right;
11+
int sum;
12+
for(int i = 0;i<len;i++){
13+
if(i> 0 && nums[i] == nums[i-1])continue;
14+
for(int j = i + 1;j<len;j++){
15+
if(j > i+1 && nums[j] == nums[j-1])continue;
16+
17+
left = j+1;
18+
right = len - 1;
19+
20+
while(left < right){
21+
22+
sum = nums[i] + nums[j] + nums[left] + nums[right];
23+
24+
if(sum == target){
25+
vector<int> tmp{nums[i],nums[j],nums[left],nums[right]};
26+
ans.push_back(tmp);
27+
28+
while(left < right && nums[left] == nums[left+1])left++;
29+
while(left < right && nums[right] == nums[right-1])right--;
30+
left++;
31+
right--;
32+
}
33+
else if(sum < target)left++;
34+
else if(sum > target)right--;
35+
}
36+
}
37+
}
38+
return ans;
39+
}
40+
};
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#48ms
2+
class Solution(object):
3+
def removeDuplicates(self, nums):
4+
if not nums:
5+
return 0
6+
7+
newtail = 0
8+
9+
for i in range(1, len(nums)):
10+
if nums[i] != nums[newtail]:
11+
newtail += 1
12+
nums[newtail] = nums[i] #只要求字符串前段正确即可
13+
14+
return newtail + 1 #要求返回新字符串长度
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#仿照0026思路-20ms
2+
class Solution(object):
3+
def removeElement(self, nums, val):
4+
if not nums:
5+
return 0
6+
7+
newtail = 0
8+
9+
for i in range(0, len(nums)):
10+
if nums[i] != val:
11+
nums[newtail] = nums[i]
12+
newtail += 1
13+
14+
return newtail
15+
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
class Solution:
2+
def strStr(self, haystack, needle):
3+
"""
4+
:type haystack: str
5+
:type needle: str
6+
:rtype: int
7+
"""
8+
for i in range(len(haystack)-len(needle)+1):
9+
p = i
10+
q = 0
11+
while p < len(haystack) and q < len(needle) and haystack[p] == needle[q]:
12+
p += 1
13+
q += 1
14+
15+
if q == len(needle):
16+
return i
17+
18+
return -1
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
class Solution {
2+
public:
3+
void nextPermutation(vector<int> &nums) {
4+
int len = nums.size();
5+
6+
if (len == 0)return;
7+
int i,j;
8+
for(i = len - 2;i>=0;i--){
9+
if(nums[i+1] > nums[i]){
10+
for(j = len - 1;j>i;j--){
11+
if(nums[j]>nums[i])break;
12+
}
13+
swap(nums[i],nums[j]);
14+
reverse(nums.begin()+i+1,nums.end());
15+
return;
16+
}
17+
}
18+
reverse(nums.begin(),nums.end());
19+
}
20+
};
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
class Solution {
2+
public int search(int[] A, int target) {
3+
if (A == null || A.length == 0) return -1;
4+
int low = 0,high = A.length - 1;
5+
while (low <= high) {
6+
int mid = low + ((high - low) >> 1);
7+
if (target < A[mid]) {
8+
if (A[mid] >= A[high] && target < A[low]) low = mid + 1;
9+
else high = mid - 1;
10+
} else if (target > A[mid]) {
11+
if (A[low] >= A[mid] && target > A[high]) high = mid - 1;
12+
else low = mid + 1;
13+
} else return mid;
14+
}
15+
return -1;
16+
}
17+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
class Solution {
2+
public int[] searchRange(int[] nums, int target) {
3+
int start = 0, end = nums.length - 1;
4+
while (start <= end) {
5+
int mid = start + (end - start) / 2;
6+
if (nums[mid] < target) start = mid + 1;
7+
else if (nums[mid] > target) end = mid - 1;
8+
if (nums[mid] == target) {
9+
return new int[]{findFirst(nums, start, mid, target),findEnd(nums, mid, end, target)};
10+
}
11+
}
12+
return new int[]{-1,-1};
13+
}
14+
private int findFirst(int[] nums, int start, int end, int target) {
15+
while (start < end) {
16+
int temp = start + (end - start) / 2;
17+
if (nums[temp] < target) start = temp + 1;
18+
else if (nums[temp] == target) end = temp;
19+
}
20+
return start;
21+
}
22+
private int findEnd(int[] nums, int start, int end, int target) {
23+
while (start < end) {
24+
int temp = start + (end - start + 1) / 2;
25+
if (nums[temp] > target) end = temp - 1;
26+
else if (nums[temp] == target) start = temp;
27+
}
28+
return start;
29+
}
30+
}

0 commit comments

Comments
 (0)