283. 移動零
給定一個數組 nums,編寫一個函數將所有 0 移動到數組的末尾,同時保持非零元素的相對順序。
示例:
輸入: [0,1,0,3,12]
輸出: [1,3,12,0,0]
public void moveZeroes(int[] nums) {
int j = 0;
//第一遍遍歷,把不爲0的數字都賦值給j
//第二遍遍歷,把0放在後面
for(int i = 0; i < nums.length; i++){
if(nums[i] != 0){
nums[j] = nums[i];
j++;
}
}
for(int i = j ; i< nums.length ; i++){
nums[i] = 0;
}
}
}
485. 最大的連續1的個數
給定一個二進制數組, 計算其中最大連續1的個數。
示例 1:
輸入: [1,1,0,1,1,1]
輸出: 3
解釋: 開頭的兩位和最後的三位都是連續1,所以最大連續1的個數是 3.
注意:
輸入的數組只包含 0 和1。
輸入數組的長度是正整數,且不超過 10,000。
class Solution {
public int findMaxConsecutiveOnes(int[] nums) {
int count = 0;
int max= 0;
for(int j = 0; j < nums.length; j++){
count = nums[j] == 0? 0 : count +1;
max = Math.max(count, max);
}
return max;
}
}
287. 尋找重複數
給定一個包含 n + 1 個整數的數組 nums,其數字都在 1 到 n 之間(包括 1 和 n),可知至少存在一個重複的整數。假設只有一個重複的整數,找出這個重複的數。
示例 1:
輸入: [1,3,4,2,2]
輸出: 2
示例 2:
輸入: [3,1,3,4,2]
輸出: 3
class Solution {
public int findDuplicate(int[] nums) {
//一個指針負責遍歷
//另一個指針不動
Arrays.sort(nums);
for (int i = 1; i < nums.length; i++) {
if (nums[i] == nums[i-1]) {
return nums[i];
}
}
return -1;
}
}