一、最大子序和 二、刪除有序數組中的重複項II
一、最大子序和給定 一个整數數組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 ; } }
每日一夸!!!
就如同薛之謙对毛不易夸奖的
"你现在就是流星" , 但是我相信你 ,你坚持下去你就是巨星"
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)