難以理解點:
- 爲什麼會return 一個int數據呢?
涉及到java中數組是值傳遞還是引用傳遞,因爲數組是用引用傳遞,所以無論將這個數組賦值給誰,其值都是指向一個地址,在方法中如果對這個地址內的值進行修改,那麼這個數組以及它賦值給的任意數組都會隨之修改,所以返回的值是不重複的長度,用於截取對應的長度的數組。代碼有解釋~
package com.example.demo;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class removeDuplicates {
@Test
public void contextLoads() {
int []nums ={3,3,4};
int s=removeDuplicates(nums);
System.out.println(s);
}
/**
* 去除一個給定排序數組的重複數字
* @param nums
* @param nums
* @return
*/
public int removeDuplicates(int[] nums) {
if (nums == null || nums.length == 0) {
return 0;
}
//不重複數組的長度
int count=0;
//i=1是因爲第一位必定不重複
for (int i = 1; i < nums.length; i++) {
//雙指針,右指針始終右移,如果當前值和左指針相同則不移動左指針,
//不相同則先右移左指針,然後將當前值賦值給移動指針完後的位置
if(nums[i]!=nums[count]){
count++;
nums[count]=nums[i];
}
}
//因爲當數組不爲空的時候 不重複數組的長度始終大於0
return count+1;
}
}
相似雙指針問題:獲取當前字符串的不重複子串的最大長度