LeetCode10-刪除排序數組的重複項

在這裏插入圖片描述
難以理解點:

  1. 爲什麼會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;
	}

}

相似雙指針問題獲取當前字符串的不重複子串的最大長度

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章