贪心算法
贪心贪心!!没有固定套路,看灵感了!
Charlesjjc
这个作者很懒,什么都没留下…
展开
-
714. 买卖股票的最佳时机含手续费
714. 买卖股票的最佳时机含手续费 // 贪心思路 class Solution { public int maxProfit(int[] prices, int fee) { int buy = prices[0] + fee; int sum = 0; for (int p : prices) { if (p + fee < buy) { buy = p + fee;原创 2021-08-12 01:49:33 · 55 阅读 · 0 评论 -
738. 单调递增的数字
738. 单调递增的数字 class Solution { public int monotoneIncreasingDigits(int n) { int[] res = getNum(n); if(res.length == 1) return res[0]; for(int i = 0; i < res.length - 1;i++){ if(res[i] < res[i + 1]){原创 2021-08-11 10:20:12 · 39 阅读 · 0 评论 -
56. 合并区间
56. 合并区间 class Solution { public int[][] merge(int[][] intervals) { int[][] result = new int[intervals.length][2]; Arrays.sort(intervals,new Comparator<int[]>(){ @Override public int compare(int[] a,int[]原创 2021-08-11 02:17:36 · 51 阅读 · 0 评论 -
763. 划分字母区间
763. 划分字母区间 class Solution { public List<Integer> partitionLabels(String s) { List<Integer> result = new ArrayList<>(); int[][] alpha = new int[26][2]; for(int i = 0; i < 26;i++){ Arrays.fill(a原创 2021-08-11 01:45:05 · 60 阅读 · 0 评论 -
435. 无重叠区间
435. 无重叠区间 class Solution { public int eraseOverlapIntervals(int[][] intervals) { Arrays.sort(intervals,new Comparator<int[]>(){ @Override public int compare(int[] a, int[] b){ if(a[0] > b[0])原创 2021-08-10 03:46:04 · 121 阅读 · 0 评论 -
452. 用最少数量的箭引爆气球
452. 用最少数量的箭引爆气球 class Solution { public int findMinArrowShots(int[][] points) { Arrays.sort(points, (o1, o2) -> Integer.compare(o1[0], o2[0])); int count = 0; int min = points[0][1]; for(int i = 1; i < points.le原创 2021-08-10 03:16:53 · 144 阅读 · 0 评论 -
406. 根据身高重建队列
406. 根据身高重建队列 class Solution { public int[][] reconstructQueue(int[][] people) { int[][] res = new int[people.length][2]; Arrays.sort(people,new Comparator<int[]>(){ @Override public int compare(int[] a,原创 2021-08-10 02:09:16 · 74 阅读 · 0 评论 -
860. 柠檬水找零
860. 柠檬水找零 class Solution { public boolean lemonadeChange(int[] bills) { HashMap<Integer,Integer> map = new HashMap<>(); for(int i = 0; i < bills.length;i++){ if(bills[i] == 5) map.put(5,map.getOrDefault(5,0原创 2021-08-10 00:43:27 · 41 阅读 · 0 评论 -
135. 分发糖果
135. 分发糖果 被困难给唬到了,一直在想策略,左边往右扫一遍,再右边往左扫一遍,遇到两次的值不一样取更大的,就可以保证满足题设条件了 class Solution { public int candy(int[] ratings) { int[] candy = new int[ratings.length]; for (int i = 0; i < candy.length; i++) { candy[i] = 1;原创 2021-08-10 02:07:29 · 63 阅读 · 0 评论 -
134. 加油站
134. 加油站 class Solution { public int canCompleteCircuit(int[] gas, int[] cost) { int min = Integer.MAX_VALUE; int cursum = 0; for(int i = 0;i < gas.length;i++){ int rest = gas[i] - cost[i]; cursum +=原创 2021-08-09 19:47:37 · 48 阅读 · 0 评论 -
1005. K 次取反后最大化的数组和
1005. K 次取反后最大化的数组和 class Solution { public int largestSumAfterKNegations(int[] nums, int k) { Arrays.sort(nums); int sum = 0; for(int i = 0; i < nums.length;i++){ if(nums[i] < 0 && k > 0){原创 2021-08-09 03:01:13 · 126 阅读 · 0 评论 -
45. 跳跃游戏 II
45. 跳跃游戏 II class Solution { public int jump(int[] nums) { if(nums.length == 1) return 0; int cover = nums[0]; int step = 0; int max = 0; int index = 0; while(cover < nums.length - 1){ in原创 2021-08-09 02:49:26 · 97 阅读 · 0 评论 -
55. 跳跃游戏
55. 跳跃游戏 class Solution { public boolean canJump(int[] nums) { if (nums.length == 1) { return true; } //覆盖范围 int coverRange = nums[0]; //在覆盖范围内更新最大的覆盖范围 for (int i = 0; i <= coverRange; i原创 2021-08-09 02:32:58 · 52 阅读 · 0 评论 -
122. 买卖股票的最佳时机 II
122. 买卖股票的最佳时机 II class Solution { public int maxProfit(int[] prices) { int res = 0; for(int i = 0;i < prices.length -1;i++){ if(prices[i] < prices[i + 1] ) res += (prices[i+1] - prices[i]); } return原创 2021-08-08 23:57:49 · 46 阅读 · 0 评论 -
53. 最大子序和
53. 最大子序和 class Solution { public int maxSubArray(int[] nums) { int sum = 0; int max = nums[0]; for(int num:nums){ if(sum > 0){ sum += num; }else{ sum = num;原创 2021-08-08 23:09:00 · 41 阅读 · 0 评论 -
376. 摆动序列
376. 摆动序列 贪心算法,记录峰和谷的个数,峰+谷+1就是总的序列长度。 class Solution { public int wiggleMaxLength(int[] nums) { int up = 1,down = 1; int pre = 0; int cur = 0; for(int i = 1; i < nums.length;i++){ cur = nums[i] - nums[原创 2021-08-08 17:19:31 · 35 阅读 · 0 评论 -
455. 分发饼干
455. 分发饼干 贪心算法开胃菜,一下子回到简单有点不适应了,哈哈哈哈哈哈哈 没啥好Mark的,秒了 class Solution { public int findContentChildren(int[] g, int[] s) { Arrays.sort(g); Arrays.sort(s); int i = 0; int j = 0; int count = 0; while(j <原创 2021-08-07 20:32:42 · 104 阅读 · 0 评论