摘要: 给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。 示例 1: 注意: 输入数组的长度不会超过 10000 阅读全文
posted @ 2018-05-07 17:16 赖兴宇 阅读(349) 评论(0) 推荐(0) 编辑
摘要: 格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。 给定一个代表编码总位数的非负整数 n,打印格雷码序列。格雷码序列必须以 0 开头。 例如,给定 n = 2,返回 [0,1,3,2]。其格雷编码是: n位的格雷码可以由n-1位的格雷码获得 一位格雷码:0,1 两位格雷码: 阅读全文
posted @ 2018-05-06 14:44 赖兴宇 阅读(961) 评论(0) 推荐(0) 编辑
摘要: 给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。 示例: 当做经验记下来吧, 涉及到指针的时候,就用LIstNode p(0), *q = &p; return p.next 阅读全文
posted @ 2018-05-06 13:12 赖兴宇 阅读(248) 评论(0) 推荐(0) 编辑
摘要: 给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 示例: 递归算法: 阅读全文
posted @ 2018-05-06 11:51 赖兴宇 阅读(389) 评论(0) 推荐(0) 编辑
摘要: 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 示例: 每一个元素有两种状态,在子集中,和不在子集中 上面的算法就是遵循这样的思维,首先申明一个大小为1的ans,然后复制这个空的vector,把nums[i]添加到这个vector中,这样 阅读全文
posted @ 2018-05-06 11:10 赖兴宇 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 给定一个可包含重复数字的序列,返回所有不重复的全排列。 示例: 发现一种更优的解法, 就是在传递nums的时候不用引用,这样就只需要一次交换。判断是否是重复元素也方便很多 此外在调用函数前要先对nums进行排序 阅读全文
posted @ 2018-05-06 01:01 赖兴宇 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 给定一个没有重复数字的序列,返回其所有可能的全排列。 示例: nums按值传递,会让代码更加简便,按值传递不会改变nums原来的排列,因而不需要多余的一次swap来使其恢复原来的排列。 阅读全文
posted @ 2018-05-05 23:34 赖兴宇 阅读(3357) 评论(0) 推荐(0) 编辑
摘要: 自除数 是指可以被它包含的每一位数除尽的数。 例如,128 是一个自除数,因为 128 % 1 == 0,128 % 2 == 0,128 % 8 == 0。 还有,自除数不允许包含 0 。 给定上边界和下边界数字,输出一个列表,列表的元素是边界(含边界)内所有的自除数。 示例 1: 注意: 每个输 阅读全文
posted @ 2018-05-04 12:14 赖兴宇 阅读(477) 评论(0) 推荐(0) 编辑
摘要: 给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。 示例 1: 示例 2: 说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。 自己写了很久的比较函数,时钟有缺陷,在网上看到了这个很巧妙的比较方法 就这么简短的程序就能实现组合最大,还是太菜了啊 阅读全文
posted @ 2018-05-04 00:26 赖兴宇 阅读(485) 评论(0) 推荐(0) 编辑
摘要: 编写程序找第 n 个丑数。 丑数就是只包含质因子 2, 3, 5 的正整数。 例如, 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 就是前10个丑数。 注意: 1. 1 一般也被当做丑数2. n不超过1690 思路:丑数是能完全被2,3,5整除的,比如12=2*2*3; 27=3*3 阅读全文
posted @ 2018-05-03 22:15 赖兴宇 阅读(314) 评论(0) 推荐(0) 编辑