随笔分类 -  leetcode

problems from leetcode
摘要:在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 示例 1: 示例 2: 说明: 你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。 最粗暴的方式是对所有的数据排序,然后取出第k个数;但是对进行很多不必要的排序; 阅读全文
posted @ 2018-06-19 23:26 赖兴宇 阅读(167) 评论(0) 推荐(0)
摘要:Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000. Example 1: Example 2: 阅读全文
posted @ 2018-06-18 23:22 赖兴宇 阅读(146) 评论(0) 推荐(0)
摘要:给定一个非负整数 num。 对于范围 0 ≤ i ≤ num 中的每个数字 i ,计算其二进制数中的1的数目并将它们作为数组返回。 示例:比如给定 num = 5 ,应该返回 [0,1,1,2,1,2]. 进阶: 给出时间复杂度为O(n * sizeof(integer)) 的解答非常容易。 但是你 阅读全文
posted @ 2018-05-13 22:34 赖兴宇 阅读(391) 评论(0) 推荐(0)
摘要:找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有1 - 9的正整数,并且每种组合中不存在重复的数字。 说明: 所有数字都是正整数。 解集不能包含重复的组合。 示例 1: 示例 2: 思路:和上一题的思路一样, 只是加了一个条件, 长度要是规定的长度 阅读全文
posted @ 2018-05-13 21:47 赖兴宇 阅读(423) 评论(0) 推荐(0)
摘要:给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用一次。 说明: 所有数字(包括目标数)都是正整数。 解集不能包含重复的组合。 示例 1: 示例 2: 阅读全文
posted @ 2018-05-13 21:19 赖兴宇 阅读(473) 评论(0) 推荐(0)
摘要:给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。 示例: 说明: 这种算法的复杂度O(n^2) 通过dfs的方法找到第i位数右边所有比它大的数,压并且压到sbuseq中,当subseq的长度大于1的时候就把它压到ans中。这样就能找到所有递增的子序列, 但是可能会 阅读全文
posted @ 2018-05-13 11:08 赖兴宇 阅读(1329) 评论(0) 推荐(0)
摘要:你总共有 n 枚硬币,你需要将它们摆成一个阶梯形状,第 k 行就必须正好有 k 枚硬币。 给定一个数字 n,找出可形成完整阶梯行的总行数。 n 是一个非负整数,并且在32位有符号整型的范围内。 示例 1: 示例 2: 阅读全文
posted @ 2018-05-13 09:58 赖兴宇 阅读(206) 评论(0) 推荐(0)
摘要:给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。 示例: 进阶:你可以不使用循环或者递归,且在 O(1) 时间复杂度内解决这个问题吗? 思路:获得num的每一位数,对其逐个求和; 重复这一过程知道和小于10 不再单独的去获取num的每一位,直接把每一位相加 阅读全文
posted @ 2018-05-13 09:34 赖兴宇 阅读(218) 评论(0) 推荐(0)
摘要:给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。 注意: 阅读全文
posted @ 2018-05-13 09:23 赖兴宇 阅读(167) 评论(0) 推荐(0)
摘要:给定两个二进制字符串,返回他们的和(用二进制表示)。 输入为非空字符串且只包含数字 1 和 0。 示例 1: 示例 2: 在b的后面添加'0', 让加法趋于一致 进一步精简代码,把重复的操作合并,减少不必要的操作 阅读全文
posted @ 2018-05-13 09:10 赖兴宇 阅读(375) 评论(0) 推荐(0)
摘要:给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增。 (当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。) 示例 1: 示例 2: 示例 3: 说明: N 是在 [0, 10^9] 范围内的一个整数。 阅读全文
posted @ 2018-05-13 00:47 赖兴宇 阅读(506) 评论(0) 推荐(0)
摘要:给定两个没有重复元素的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。找到 nums1 中每个元素在 nums2 中的下一个比其大的值。 nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出- 阅读全文
posted @ 2018-05-07 20:54 赖兴宇 阅读(288) 评论(0) 推荐(0)
摘要:给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。 示例 1: 注意: 输入数组的长度不会超过 10000 阅读全文
posted @ 2018-05-07 17:16 赖兴宇 阅读(373) 评论(0) 推荐(0)
摘要:给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。 示例: 当做经验记下来吧, 涉及到指针的时候,就用LIstNode p(0), *q = &p; return p.next 阅读全文
posted @ 2018-05-06 13:12 赖兴宇 阅读(256) 评论(0) 推荐(0)
摘要:给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 示例: 递归算法: 阅读全文
posted @ 2018-05-06 11:51 赖兴宇 阅读(396) 评论(0) 推荐(0)
摘要:给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 示例: 每一个元素有两种状态,在子集中,和不在子集中 上面的算法就是遵循这样的思维,首先申明一个大小为1的ans,然后复制这个空的vector,把nums[i]添加到这个vector中,这样 阅读全文
posted @ 2018-05-06 11:10 赖兴宇 阅读(217) 评论(0) 推荐(0)
摘要:给定一个可包含重复数字的序列,返回所有不重复的全排列。 示例: 发现一种更优的解法, 就是在传递nums的时候不用引用,这样就只需要一次交换。判断是否是重复元素也方便很多 此外在调用函数前要先对nums进行排序 阅读全文
posted @ 2018-05-06 01:01 赖兴宇 阅读(215) 评论(0) 推荐(0)
摘要:给定一个没有重复数字的序列,返回其所有可能的全排列。 示例: nums按值传递,会让代码更加简便,按值传递不会改变nums原来的排列,因而不需要多余的一次swap来使其恢复原来的排列。 阅读全文
posted @ 2018-05-05 23:34 赖兴宇 阅读(3378) 评论(0) 推荐(0)
摘要:自除数 是指可以被它包含的每一位数除尽的数。 例如,128 是一个自除数,因为 128 % 1 == 0,128 % 2 == 0,128 % 8 == 0。 还有,自除数不允许包含 0 。 给定上边界和下边界数字,输出一个列表,列表的元素是边界(含边界)内所有的自除数。 示例 1: 注意: 每个输 阅读全文
posted @ 2018-05-04 12:14 赖兴宇 阅读(493) 评论(0) 推荐(0)
摘要:给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。 示例 1: 示例 2: 说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。 自己写了很久的比较函数,时钟有缺陷,在网上看到了这个很巧妙的比较方法 就这么简短的程序就能实现组合最大,还是太菜了啊 阅读全文
posted @ 2018-05-04 00:26 赖兴宇 阅读(500) 评论(0) 推荐(0)