贪心
文章平均质量分 52
Vendredimatin
这个作者很懒,什么都没留下…
展开
-
Lintcode 1230. Assign Cookies
描述:Assume you are an awesome parent and want to give your children some cookies. But, you should give each child at most one cookie. Each child i has a greed factor gi, which is the minimum size of a ...原创 2018-09-18 17:25:19 · 129 阅读 · 0 评论 -
Lintcode:761. 最小子集
描述给一 非负 整数数组. 取数组中的一部分元素, 使得它们的和大于数组中其余元素的和, 求出满足条件的元素数量最小值.个人思路:要求取出元素的和大于数组其余元素的和,那么毫无疑问当前的贪心策略应该是优先取出最大的元素。然后比较取出元素的和和生于元素的和,哪一个更大 public int minElements(int[] arr) { // write your c...原创 2018-09-23 09:40:58 · 417 阅读 · 0 评论 -
Lintcode:150. 买卖股票的最佳时机 II
描述假设有一个数组,它的第i个元素是一个给定的股票在第i天的价格。设计一个算法来找到最大的利润。你可以完成尽可能多的交易(多次买卖股票)。然而,你不能同时参与多个交易(你必须在再次购买前出售股票)。个人思路:做法借鉴于买卖股票的最佳时机(含手续费),还是在讨论该分一次卖还是分两次卖的收益更高,其实如果maxP > price[i],即i及之前的最高价格如果高于目前的价格,那么就是值得...原创 2018-09-23 10:09:43 · 182 阅读 · 0 评论 -
Lintcode 1263. Is Subsequence
Given a string s and a string t, check if s is subsequence of t.You may assume that there is only lower case English letters in both s and t. t is potentially a very long (length ~= 500,000) string,...原创 2018-10-07 11:19:09 · 116 阅读 · 0 评论 -
Lintcode 394. 硬币排成线
有 n 个硬币排成一条线。两个参赛者轮流从右边依次拿走 1 或 2 个硬币,直到没有硬币为止。拿到最后一枚硬币的人获胜。请判定 第一个玩家 是输还是赢?有点博弈论的意思public boolean firstWillWin(int n) { // write your code here boolean[] dp = new boolean[n+1]; dp[...原创 2018-10-07 11:20:58 · 228 阅读 · 0 评论 -
Lintcode:919. 会议室 II
给定一系列的会议时间间隔intervals,包括起始和结束时间[[s1,e1],[s2,e2],...] (si < ei),找到所需的最小的会议室数量。public int minMeetingRooms(List<Interval> intervals) { //List<Interval> list = List.of(new Interval(...原创 2018-10-07 11:25:06 · 461 阅读 · 0 评论 -
Lintcode:884. 寻找排列
现在,给你一个由字符'D'和'I'构成的加密签名。'D'表示两个数字是递减关系,'I'表示两个数字是递增关系。我们的加密签名是由一个特殊的整数数组生成的。这个数组含有从1到n(n是加密签名的长度加1)的所有数字,并且每个数字只出现一次。举例来说,加密签名"DI"可以有数组[2,1,3]或者[3,1,2]生成,但是不能由数组[3,2,4]或者[2,1,3,4]生成。[3,2,4]和[2,1,3,4]...原创 2018-10-07 11:28:04 · 492 阅读 · 0 评论 -
Lintcode 149. 买卖股票的最佳时机
假设有一个数组,它的第i个元素是一支给定的股票在第i天的价格。如果你最多只允许完成一次交易(例如,一次买卖股票),设计一个算法来找出最大利润。public int maxProfit(int[] prices) { // write your code here if (prices.length == 0) return 0; int minP =...原创 2018-10-07 11:29:25 · 302 阅读 · 0 评论 -
Lintcode 67. 四键键盘
假设你有一个特殊的键盘,键盘上有如下键:键1:(A):在屏幕上打印一个'A'。键2:(Ctrl-A):选择整个屏幕。键3:(Ctrl-C):复制选择到缓冲区。键4:(Ctrl-V):在屏幕上已有的内容后面追加打印缓冲区的内容。现在,你只能按键盘上N次(使用以上四个键),找出你可以在屏幕上打印的“A”的最大数量这道题钻牛角尖了,直接贴上大佬解法dalao解法public int max...转载 2018-10-07 11:30:59 · 509 阅读 · 0 评论 -
Lintcode 83. 落单的数 II
给出3*n + 1 个的数字,除其中一个数字之外其他每个数字均出现三次,找到这个数字 public int singleNumberII(int[] A) { // write your code here //https://blog.csdn.net/ys_sarah/article/details/51025910 if(A == null || A.len...转载 2018-10-07 11:32:18 · 193 阅读 · 0 评论 -
Lintcode 791. Merge Number
给出n个数,现在要将这n个数合并成一个数,每次只能选择两个数a,b合并,每次合并需要消耗a+b的能量,输出将这n个数合并成一个数后消耗的最小能量。public int mergeNumber(int[] numbers) { // Write your code here PriorityQueue<Integer> priorityQueue = new Pri...原创 2018-10-07 11:33:25 · 273 阅读 · 0 评论 -
Lintcode : 116. 跳跃游戏
给出一个非负整数数组,你最初定位在数组的第一个位置。 数组中的每个元素代表你在那个位置可以跳跃的最大长度。 判断你是否能到达数组的最后一个位置。public boolean canJump(int[] A) { // write your code here if (A[0] == 0 && A.length != 1) re...原创 2018-10-07 11:38:09 · 175 阅读 · 0 评论 -
Lintcode 84. 落单的数 III
给出2*n + 2个的数字,除其中两个数字之外其他每个数字均出现两次,找到这两个数字。dalao解法:public List<Integer> singleNumberIII(int[] A) { // write your code here //https://blog.csdn.net/wutingyehe/article/details/5108530...转载 2018-10-07 11:40:07 · 184 阅读 · 0 评论 -
Lintcode 117. 跳跃游戏 II
给出一个非负整数数组,你最初定位在数组的第一个位置。数组中的每个元素代表你在那个位置可以跳跃的最大长度。 你的目标是使用最少的跳跃次数到达数组的最后一个位置。public int jump(int[] A) { int count = 0; int maxPos = 0; int lastMaxPos = -1; for (int i = 0; ...原创 2018-10-10 21:43:54 · 121 阅读 · 0 评论 -
Lintcode : 196. Missing Number
给出一个包含 0 .. N 中 N 个数的序列,找出0 .. N 中没有出现在序列中的那个数。自己的思路:public int findMissing(int[] nums) { int missingNum = 0; int sum = (nums.length+1) * (nums.length + 0)/2; for (int i = 0; i < n...原创 2018-10-10 21:44:02 · 112 阅读 · 0 评论 -
Lintcode:1242. Non-overlapping Intervals
描述Given a collection of intervals, find the minimum number of intervals you need to remove to make the rest of the intervals non-overlapping. 个人思路:既然要求最少移出,那么可以确定的贪心策略就是如果发生冲突,那么移出区间更长的interval,...原创 2018-09-23 09:32:10 · 100 阅读 · 0 评论 -
Lintcode:945 Task Scheduler
描述Given a char array representing tasks CPU need to do. It contains capital letters A to Z where different letters represent different tasks.Tasks could be done without original order. Each task cou...转载 2018-09-23 00:29:56 · 392 阅读 · 0 评论 -
LintCode 46. Majority Element
描述:给定一个整型数组,找出主元素,它在数组中的出现次数严格大于数组元素个数的二分之一。自己的做法太丑陋,只有dalao的做法思路:反正主元素一定是数组里面数量最多的那一个数,采取的策略是,每当遇到同一个数,计数器count++,当遇到不同的数,count--,当count = 0 时,更换另一个数。(但是我现在仍然如何从贪心的角度去解读这个思路,望赐教) public int ...转载 2018-09-18 17:38:36 · 97 阅读 · 0 评论 -
Lintcode 41. 最大子数组
描述:给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。 个人思路:通过观察可以知道,要想和最大,那么这个子数组的开头元素和结尾元素必须是个非负数,因此采取的贪心策略是,先索引到数组的第一个非负数,然后开始累加,当累加的索引指向另外一个非负数时,就比较之前的和加上该数大,还是该数本来就大,然后再对前一步的结果和之前记录的最大两者取最大(PS:请忽视我混乱的代码) pub...原创 2018-09-18 17:58:34 · 115 阅读 · 0 评论 -
Lintcode 44. 最小子数组
描述:给定一个整数数组,找到一个具有最小和的子数组。返回其最小和。个人思路:同上一题最大子数组一样,借鉴dalao思路,采取的贪心策略是先加,当累计和大于0的时候置0public int minSubArray(List<Integer> nums) { int eleMin = 0; int minSum = nums.get(0); ...原创 2018-09-18 18:08:40 · 133 阅读 · 0 评论 -
LintCode:1252. Queue Reconstruction by Height
描述Suppose you have a random list of people standing in a queue. Each person is described by a pair of integers (h, k), where h is the height of the person and k is the number of people in front of t...转载 2018-09-18 18:39:11 · 132 阅读 · 0 评论 -
LintCode:1045. 分割标签
描述给出一个由小写字母组成的字符串S。需要将这个字符串分割成尽可能多的部分,使得每个字母最多只出现在一个部分中,并且返回每个部分的长度。个人思路:采取的贪心策略是,先遍历一次字符串,得到每个字符的结束的位置,第二次遍历字符串时,都将遍历到的字符的结束位置和之前记录的结束位置比较,最后取最远的结束位置,当i遍历到结束位置时,说明符合题目的要求 public List<Inte...原创 2018-09-18 19:02:35 · 179 阅读 · 0 评论 -
LintCode : 1164. Wiggle Subsequence
描述A sequence of numbers is called a wiggle sequence if the differences between successive numbers strictly alternate between positive and negative. The first difference (if one exists) may be either...原创 2018-09-18 19:19:54 · 143 阅读 · 0 评论 -
LintCode:1000. 买卖股票的最佳时机含手续费
描述现在给出一个数组,包含一系列价格,其中第i个元素是一支股票在第i天的价格;一个非负数fee代表了手续费。你可以根据需要任意地进行交易,但是每次交易都必须付手续费。每次购买不能超过1股(必须在再次购买的之前卖出股票)。返回可以获得的最大利润。dalao思路:也有动态规划的解法,但这里使用贪心的解法选择的关键是找到一个最大后是不是能够卖掉stock,重新开始寻找买入机会。比如序...转载 2018-09-18 19:29:26 · 524 阅读 · 0 评论 -
Lintcode : 743. 单调递增的数字
描述给一非负整数 N, 找到小于等于 N 的最大的 单调递增数. (回想一下, 当且仅当每对相邻的数字 x 和 y 满足 x <= y 时, 这个整数才是单调递增数)自己思路:自己写的比较丑陋,就不贴出来了,其实就是把所有情况判断出来,然后挑选符合条件的dalao思路:要找到从后往前遍历的最后一个值升高的位置,让前一位减1,并把当前位以及后面的所有位都变成9,就可以得到最大的单调...转载 2018-10-11 09:07:11 · 306 阅读 · 0 评论 -
Lintcode :47. Majority Element II
描述给定一个整型数组,找到主元素,它在数组中的出现次数严格大于数组元素个数的三分之一。dalao思路是,如果出现3个不一样的数,就抵消掉。记录两个candidate和每个candidate分别的出现次数。如果遍历到的数和两个candidate都不等,就count都减1。最后可能会剩下两个candidate,再遍历一次整个数组验证一下谁是主元素。 public int maj...转载 2018-10-11 09:10:01 · 102 阅读 · 0 评论 -
Lintcode : 187 加油站
描述在一条环路上有 N 个加油站,其中第 i 个加油站有汽油gas[i],并且从第_i_个加油站前往第_i_+1个加油站需要消耗汽油cost[i]。你有一辆油箱容量无限大的汽车,现在要从某一个加油站出发绕环路一周,一开始油箱为空。求可环绕环路一周时出发的加油站的编号,若不存在环绕一周的方案,则返回-1。自己思路:采取的贪心策略就是看curGas,如果汽油可以一直累计>=0 那...原创 2018-10-11 09:19:22 · 231 阅读 · 0 评论 -
Lintcode: 42. 最大子数组 II
描述给定一个整数数组,找出两个 不重叠 子数组使得它们的和最大。每个子数组的数字在数组中的位置应该是连续的。返回最大的和。样例给出数组 [1, 3, -1, 2, -1, 2]这两个子数组分别为 [1, 3] 和 [2, -1, 2] 或者 [1, 3, -1, 2] 和 [2],它们的最大和都是 7挑战要求时间复杂度为 O(n)dalao思路:left数组表示0-i...原创 2018-10-11 09:25:01 · 167 阅读 · 0 评论 -
Lintcode :45. 最大子数组差
描述给定一个整数数组,找出两个不重叠的子数组A和B,使两个子数组和的差的绝对值|SUM(A) - SUM(B)|最大。返回这个最大的差值。子数组最少包含一个数样例给出数组[1, 2, -3, 1],返回 6挑战时间复杂度为O(n),空间复杂度为O(n)思路:与上一题最大子数组II类似,只是要分情况找到sum(A)最大,sum(B)最小和sum(A)最小,sum(B)...原创 2018-10-11 09:27:49 · 214 阅读 · 0 评论 -
Lintcode:182. 删除数字
描述给出一个字符串 A, 表示一个 n 位正整数, 删除其中 k 位数字, 使得剩余的数字仍然按照原来的顺序排列产生一个新的正整数。找到删除 k 个数字之后的最小正整数。N <= 240, k <= N样例给出一个字符串代表的正整数 A 和一个整数 k, 其中 A = 178542, k = 4返回一个字符串 "12"自己思路:采取的贪心策略如果前一个数大于...原创 2018-10-11 09:32:30 · 378 阅读 · 0 评论 -
Lintcode:1290. Patching Array
描述Given a sorted positive integer array nums and an integer n, add/patch elements to the array such that any number in range [1, n] inclusive can be formed by the sum of some elements in the array. ...原创 2018-10-11 09:36:09 · 118 阅读 · 0 评论 -
leetcode 53. Maximum Subarray
Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum.Example:Input: [-2,1,-3,4,-1,2,1,-5,4],Output: 6Explanation:...原创 2019-05-20 12:15:50 · 98 阅读 · 0 评论