704题:简单的二分法,但是由于粗心对左右门的关闭上出现了错误。
具体为忘记给左门加一给右门减一,我有罪。代码如下:
class Solution {
public int search(int[] nums, int target) {
int index1 = nums.length-1;
int index2 = 0;
int index3= (index1 - index2)/2;
while (index1>=index2){
if (nums[index3]==target){
return index3;
}else if (nums[index3]>target){
index1 = index3 -1 ;
index3= (index1 - index2)/2;
}else {
index2 = index3 + 1;
index3= (index1 - index2)/2 + index2;
}
}
return -1;
}
}
27题两种方法:快慢指针和暴力代码如下
暴力:
class Solution {
public int removeElement(int[] nums, int val) {
if (nums==null){return 0;}
int count = 0;
for (int i = 0;i<nums.length;){
if (nums[i]==val){
count++;
for (int j=i+1;j<nums.length;j++){
nums[j-1] = nums[j];
}
if (i+count==nums.length){
break;
}
}else {i++;}
}
return nums.length-count;
}
}
快慢指针:
class Solution {
public int removeElement(int[] nums, int val) {
int index1 = 0;
int index2 = 0;
while (index2<nums.length){
if (nums[index2]!=val){
nums[index1] = nums[index2];
index1++;
index2++;
}else {
index2++;
}
}
return index1;
}
}