26.刪除排序數組中的重複項
刪除排序數組中的重複項題目鏈接
- 首先這道題要求你不能用多餘空間,只讓你用這個數組nums來實現,那麼第一反應就是遇到重複的就去移動,但是仔細想想這種思路挺複雜的,效率也不高。
- 我們可以反向思考一下,從數組頭開始遍歷,用一個指針記錄當前第一個數,遇到不等於當前指針數的就數組頭開始覆蓋,然後更新這個指針數,這樣只需要遍歷一次答案就出來了
public int removeDuplicates(int[] nums) {
if(nums==null||nums.length==0){
return 0;
}
int len = 1;
int num = nums[0];
for(int i=1;i<nums.length;i++){
if(num!=nums[i]){
nums[len++]=nums[i];
num=nums[i];
}
}
return len;
}
27.移除元素
移除元素題目鏈接
- 和上面題要求一樣,要求你不能用多餘空間,只讓你用這個數組nums來實現,那麼第一反應就是遇到重複的就去移動,但是仔細想想這種思路挺複雜的,效率也不高
- 我們可以反向思考一下,從數組頭開始遍歷,遇到不等於給定數的就從頭覆蓋,這樣只需要遍歷一次答案就出來了,相比上道題少了一個讓你更新指針的操作
public int removeElement(int[] nums, int val) {
if(nums==null||nums.length==0){
return 0;
}
int len = 0;
for(int i=0;i<nums.length;i++){
if(nums[i]!=val){
nums[len++]=nums[i];
}
}
return len;
}
28.實現strStr
實現strStr題目鏈接
- 方法一:首先我們可以循環haystack,遇到當前字符和needle第一個字符相同再去截取同樣長度的haystack比較
public int strStr(String haystack, String needle) {
if(haystack==null&&needle!=null){
return -1;
}
if(needle==null||needle.length()==0){
return 0;
}
int len = -1;
for(int i=0;i<=haystack.length()-needle.length();i++){
if(haystack.charAt(i)==needle.charAt(0)){
String str = haystack.substring(i,i+needle.length());
if(str.equals(needle)) {
len = i;
break;
}
}
}
return len;
}