665. 非递减数列
一度想要放弃思考直接选择暴力求解……
现在做题有点急躁,总是不肯耐下心去思考,这样效果很不好,不但没有加快解题速度,反而极大地延长了解题时间……
好好反思。
此题画星
class Solution {
public boolean checkPossibility(int[] nums) {
if(nums.length == 1){
return true;
}
int count= 0;
if(nums[0]>nums[1]){
nums[0] = nums[1];
count++;
}
for(int i = 1;i <nums.length-1;i++){
if(nums[i]>nums[i+1]){
count++;
if(count>=2){
return false;
}
if(nums[i-1]>nums[i+1]){
nums[i+1] = nums[i];
}else{
nums[i] = nums[i+1];
}
}
}
return true;
}
}
453. 最小移动次数使数组元素相等
数学思维很重要!
class Solution {
public int minMoves(int[] nums) {
int min = nums[0];
for(int i = 1;i < nums.length;i++){
min = Math.min(min,nums[i]);
}
int count = 0;
for(int i = 0;i < nums.length;i++){
count += nums[i]-min;
}
return count;
}
}
283. 移动零
class Solution {
public void moveZeroes(int[] nums) {
int p = 0;
while(p<nums.length && nums[p]!=0){
p++;
}
if(p == nums.length){
return;
}
for(int i = p+1;i < nums.length;i++){
while(i<nums.length && nums[i]==0){
i++;
}
if(i == nums.length){
break;
}
nums[p] = nums[i];
nums[i] = 0;
p++;
while(p<nums.length && nums[p]!=0){
p++;
}
if(p == nums.length){
break;
}
}
}
}
class Solution {
public void moveZeroes(int[] nums) {
int[] arr = new int[nums.length];
int count = 0;
Arrays.fill(arr,0);
for(int i : nums){
if(i!=0){
arr[count++] = i;
}
}
for(int i = 0;i < nums.length;i++){
nums[i] = arr[i];
}
}
}