🔥 一、最大子序和
給定 一个整數數組nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其中最大和
例子一:nums = [-2,1,-3,4,-1,2,1,-5,4]
输出: 6
解释 : 连续子数组[4,-1,2,1]的和最大 , 为6
🍎思路定义:循环遍历数组
🍎将数组的第一个max = nums[0]
🍎还需要定义变量curSum (这个变量累积数组和)
🍎判断curSum和max的大小
🍎如果大的话就把 max赋给curSum
🍎最后返回最大值max
package day11.first;
public class Solution {
public static void main(String[] args) {
int [] arr = new int[]{-2,1,-3,4,-1,2,1,-5,4};
int a = maxArr(arr);
System.out.println(a);
}
public static int maxArr (int [] arr) {
int maxNum = arr[0]; //定义一个最大值
int curSum = 0 ; //定义
for (int n : arr ) {
curSum+=n;
if( curSum > maxNum){
maxNum = curSum ;
}
if(curSum < 0 ){
curSum = 0 ;
}
}
return maxNum;
}
}
🔥 二、刪除有序數組中的重複項II
🍎给定一个有序数组nums ,请你原地删除重复出现元素,使每个元素最多出现两次,返回删除后数组的新长度
🍎输入 [1,1,1,2,2,3]
🍎输出:5
package day11.second;
//给定一个有序数组nums ,请你原地删除重复出现元素,使每个元素最多出现两次,返回删除后数组的新长度
//输入 [1,1,1,2,2,3]
//输出: [1,1,2,2,3]
public class Solution {
public static void main(String[] args) {
int [] a = new int[] {1,1,1,2,2,3};
System.out.println(arr(a));
}
public static int arr (int [] nums){
int i = 0 ;
for(int n : nums ){
if(i < 2 || n > nums[i - 2 ]) {
nums[i++] = n;
}
}
return i ;
}
}
🍑每日一夸!!!
🍑就如同薛之謙对毛不易夸奖的
🍑"你现在就是流星" , 但是我相信你 ,你坚持下去你就是巨星"