摘要:
思路:因为第一个和最后一个不能同时选,所以将环形分成两段[0,len-2]和[1,len-1],分别用"打家劫舍1"求解,然后求最大值即可。 class Solution { public int rob(int[] nums) { int len=nums.length; if(len==1) r 阅读全文
摘要:
本题和分割等和子集基本一样,将stones分成两堆,两堆的和要尽可能的相同。 class Solution { public int lastStoneWeightII(int[] stones) { int sum=0; for(int s:stones) sum+=s; int num=solv 阅读全文
摘要:
先求出总和sum,要求出是否存在子集,使得子集和为sum/2。 本题看做一个0-1背包问题:物品的重量和价值就是元素值,背包总承重是sum/2,可以求出背包能放下的最大价值,如果该值正好等于sum/2,说明正好装满 class Solution { public boolean canPartiti 阅读全文
摘要:
贪心: class Solution { public int maxProfit(int[] prices, int fee) { int n=prices.length; int low=prices[0]; int ans=0; for(int i=1;i<n;i++){ if(prices[ 阅读全文
摘要:
class Solution { public int monotoneIncreasingDigits(int n) { char[] arr=Integer.toString(n).toCharArray(); int len=arr.length; int k=len; for(int i=l 阅读全文
摘要:
class Solution { public int eraseOverlapIntervals(int[][] intervals) { Arrays.sort(intervals,(a,b)->a[1]-b[1]); int n=intervals.length; int right=inte 阅读全文