qingcheng奕  
06 2014 档案
  • LeetCode OJ-- Generate Parentheses *
    摘要:https://oj.leetcode.com/problems/generate-parentheses/输入n产生n个( ,n个 )组成的所有合法的括号组合。现在纸上画画,找到规律:1.每一个位置上 ( 的个数必须 >= ) 的个数2.如果 ( 的个数是n了,则只能再画 ) 了3.否则,既可以是... 阅读全文
    posted @ 2014-06-30 21:33 qingcheng奕 阅读(162) 评论(0) 推荐(0)
  • LeetCode OJ-- First Missing Positive
    摘要:https://oj.leetcode.com/problems/first-missing-positive/给一列数,找出缺失的第一个正数。要求时间复杂度 O(n)第一步遍历一遍,找出最大的数和最小的数。第二步建立一个vector,以 max+1 为size。第三部遍历一遍,存储每个存在的数到相... 阅读全文
    posted @ 2014-06-30 21:07 qingcheng奕 阅读(160) 评论(0) 推荐(0)
  • LeetCode OJ-- Divide Two Integers *
    摘要:https://oj.leetcode.com/problems/divide-two-integers/在不使用乘法、除法、求余的情况下计算除法。使用减法计算,看看减几次。刚开始寻思朴素的暴力做,然后超时了。于是开始增大每次的被减数但是溢出了。2的32次方=4294967296(无符号),带符号再... 阅读全文
    posted @ 2014-06-30 20:36 qingcheng奕 阅读(214) 评论(0) 推荐(0)
  • LeetCode OJ-- Distinct Subsequences ** 递推
    摘要:https://oj.leetcode.com/problems/distinct-subsequences/对于string S 和 T求,T 是 S的几种子串。首先想到了递归方法,列出递归公式,奈何超时了:如果S[sBegin] == T[tBegin] 则是 numSubDistinct(sB... 阅读全文
    posted @ 2014-06-30 19:22 qingcheng奕 阅读(162) 评论(0) 推荐(0)
  • LeetCode OJ-- Decode Ways **
    摘要:https://oj.leetcode.com/problems/decode-ways/对于1 3 2 4 3 1 可以一次选择一个数,或者一次选择两个数进行拆分使用递推来做,但是有几个情况关于0的,要考虑清楚了。1. A[0] == '0' return 02. A[1] = 13. A[1] ... 阅读全文
    posted @ 2014-06-30 09:51 qingcheng奕 阅读(274) 评论(1) 推荐(0)
  • LeetCode OJ-- Count and Say
    摘要:https://oj.leetcode.com/problems/count-and-say/求经过n次变换后,变成了什么。1 11 21 1211 111221ps. 3 变成 ‘3’,为 3 + '0'class Solution {public: string countAndSay(... 阅读全文
    posted @ 2014-06-29 19:24 qingcheng奕 阅读(171) 评论(0) 推荐(0)
  • LeetCode OJ--Copy List with Random Pointer **
    摘要:https://oj.leetcode.com/problems/copy-list-with-random-pointer/灵活的指针链表应用。每个节点有两个指针next,random,对本链表做一个深拷贝。就是完全用新内存弄出一个一样的来。a链表: a b c三个nodeb链表: a1 b1 c... 阅读全文
    posted @ 2014-06-29 11:32 qingcheng奕 阅读(213) 评论(0) 推荐(0)
  • LeetCode OJ-- Container With Most Water
    摘要:https://oj.leetcode.com/problems/container-with-most-water/不同高度的柱子排一列,两个柱子可以组成一个容器,求最大容积。最直观的方法就是暴力,两层for循环,分别遍历头柱子和尾柱子。但是超时了于是看了discuss,有O(n)的方法。clas... 阅读全文
    posted @ 2014-06-27 10:29 qingcheng奕 阅读(119) 评论(0) 推荐(0)
  • LeetCode OJ--Combinations *
    摘要:https://oj.leetcode.com/problems/combinations/给一个集合,求个数为k的所有子集递归调用,深搜 class Solution {public: vector > combine(int n, int k){ vector > a... 阅读全文
    posted @ 2014-06-27 09:40 qingcheng奕 阅读(134) 评论(0) 推荐(0)
  • LeetCode OJ-- Combination Sum II **
    摘要:https://oj.leetcode.com/problems/combination-sum-ii/一列数,每个数只能用一次或者不用,给出和为target的组合。递归写的深搜,使用了编程技巧,引用。因为递归在本意上是不需要这个引用的,因为它额外的改了调用参数,所以,又有相应的 pop_back(... 阅读全文
    posted @ 2014-06-25 21:25 qingcheng奕 阅读(141) 评论(0) 推荐(0)
  • LeetCode OJ--Combination Sum **
    摘要:https://oj.leetcode.com/problems/combination-sum/给一列数,3 2 1 3 3 8 7 9 ,每个数可以重复多次,给target 7, 问可以加起来得7的所有组合。递归,类似深搜的思想。class Solution {public: vector... 阅读全文
    posted @ 2014-06-25 11:19 qingcheng奕 阅读(190) 评论(0) 推荐(0)
  • LeetCode OJ-- Candy **
    摘要:https://oj.leetcode.com/problems/candy/一排小孩,每个有自己的ratings,每个小孩至少一个candy,并且ratings号大于neighbour的小孩的candy数大于neighbour的。先初始化每个小孩一个candy从左到右扫描一遍,如果右边的 rati... 阅读全文
    posted @ 2014-06-25 10:12 qingcheng奕 阅读(248) 评论(0) 推荐(0)
  • LeetCode OJ--Anagrams **
    摘要:https://oj.leetcode.com/problems/anagrams/在一个vector中,找到所有经过顺序变换,可以变成一样的 string.首先,对每个 string 排序,这样它的顺序就是 abcd 相当于做了一个统一。然后,对vector排序,这样,如果有重复的,则必相邻,相当... 阅读全文
    posted @ 2014-06-24 10:22 qingcheng奕 阅读(177) 评论(0) 推荐(0)
  • LeetCode OJ-- 3Sum Closest
    摘要:https://oj.leetcode.com/problems/3sum-closest/给一列数和target,在这一列数中找出3个数,使其和最接近target,返回这个target。一般思路是 n*n*n,优化的话,如下:先给数排序,然后对第一个数进行遍历 i,第二个数为i+1,第三个数为le... 阅读全文
    posted @ 2014-06-23 15:21 qingcheng奕 阅读(131) 评论(0) 推荐(0)
  • LeetCode OJ--4Sum *
    摘要:https://oj.leetcode.com/problems/4sum/在一个数列中,找出所有的4个数,它们的和是target.class Solution {public: vector > fourSum(vector &num, int target) { vecto... 阅读全文
    posted @ 2014-06-23 11:06 qingcheng奕 阅读(145) 评论(0) 推荐(0)
  • LeetCode OJ-- 3Sum **
    摘要:https://oj.leetcode.com/problems/3sum/在一个数列中,求出所有3个数之和是0的3个数。刚开始给自己挖了坑,由于没闹清,unique()函数的含义,去掉重复不彻底,所以一直 output limit Exceeded.于是,想新的判断是否重复的方法,这样跳过了一部分... 阅读全文
    posted @ 2014-06-23 09:37 qingcheng奕 阅读(160) 评论(0) 推荐(0)
  • 二分查找
    摘要:int find(int beginPos,vector& num,int target) { int endPos = num.size()-1; int mid; while(beginPos<=endPos) { ... 阅读全文
    posted @ 2014-06-23 09:21 qingcheng奕 阅读(103) 评论(0) 推荐(0)
  • 容器中元素的去重——ans.erase(unique(ans.begin(),ans.end()),ans.end());
    摘要:啊,原来unique()函数,只是处理的连续的元素,比如 -1 -1 -1 1 2 -1 2 就处理成了 -1 1 2 -1 2 -1 -1并且返回5,之后eraser(5,7)剩下了 -1 1 2 -1 2 .但这不是本意,为了去除重复元素,应该先 sort(),变成 -1 -1 -1 -1 1 ... 阅读全文
    posted @ 2014-06-22 21:55 qingcheng奕 阅读(706) 评论(0) 推荐(0)
  • LeetCode OJ-- Restore IP Addresses
    摘要:https://oj.leetcode.com/problems/restore-ip-addresses/string到int的ip地址格式化。分别用 i+1,j+1,k+1,表示前三个地址段的数位的个数。之后判断每个地址段是否数字个数都是从1到3,并且数是从0到255,符合条件的即可。如果一个地... 阅读全文
    posted @ 2014-06-21 20:27 qingcheng奕 阅读(163) 评论(0) 推荐(0)
  • LeetCode OJ-- Spiral Matrix II
    摘要:https://oj.leetcode.com/problems/spiral-matrix-ii/螺旋矩阵,和题目一一样的思路,这个是产生n*n 矩阵。#include #include using namespace std;class Solution {public: vector >... 阅读全文
    posted @ 2014-06-21 19:30 qingcheng奕 阅读(156) 评论(0) 推荐(0)
  • LeetCode OJ-- Reverse Integer
    摘要:https://oj.leetcode.com/problems/reverse-integer/一个整数,给反过来,比如123输出321.注意12300的情况,应该输出321,还有-123,是-321.class Solution {public: int reverse(int x) { ... 阅读全文
    posted @ 2014-06-21 12:42 qingcheng奕 阅读(155) 评论(0) 推荐(0)
  • LeetCode OJ-- Spiral Matrix
    摘要:https://oj.leetcode.com/problems/spiral-matrix/螺旋矩阵,逆着转,输出矩阵中的元素。在纸上模仿,然后记左上角(l1,l2)右上角(l1,r2),左下角(p1,l2)右下角(p1,r2).然后4个for循环从一个点到另一个点位置遍历。while控制总的。当... 阅读全文
    posted @ 2014-06-21 11:28 qingcheng奕 阅读(329) 评论(0) 推荐(0)
  • LeetCode OJ-- Trapping Rain Water*
    摘要:https://oj.leetcode.com/problems/trapping-rain-water/模拟题,计算出在凹凸处存水量。对于一个位置 i ,分别计算出它左边的最大值 left (从左扫描一遍), 右边的最大值 right(从右扫描一遍) 。找left right中的最小值,如果大于 ... 阅读全文
    posted @ 2014-06-19 20:49 qingcheng奕 阅读(159) 评论(0) 推荐(0)
  • LeetCode OJ--Triangle **
    摘要:https://oj.leetcode.com/problems/triangle/一个三角形,类似于杨辉三角的形状,求从上到下最小的路径和,但走每一步都得是相邻的。动态规划,从下到上一层层来。sum[i] = min{sum[i]+triangle[i][j],sum[i+1]+triangle[... 阅读全文
    posted @ 2014-06-19 19:48 qingcheng奕 阅读(154) 评论(0) 推荐(0)
  • LeetCode OJ-- Sqrt(x) *
    摘要:https://oj.leetcode.com/problems/sqrtx/求一个数的开方,二分查找一个数,直到这个数的平方 - target 小于 0.001。但这道题出的不好,返回值竟然是 int ,脑洞太大了。class Solution {public: int sqrt(int x... 阅读全文
    posted @ 2014-06-19 15:15 qingcheng奕 阅读(134) 评论(0) 推荐(0)
  • LeetCode OJ-- Simplify Path **
    摘要:https://oj.leetcode.com/problems/simplify-path/对linux路径的规范化,属于字符串处理的题目。细节很多。#include #include using namespace std;class Solution {public: string si... 阅读全文
    posted @ 2014-06-19 14:55 qingcheng奕 阅读(125) 评论(0) 推荐(0)
  • LeetCode OJ--Minimum Path Sum **
    摘要:https://oj.leetcode.com/problems/minimum-path-sum/对一个grid从左上角到右下角的路径,求出路径中和最小的。受之前思路的影响,就寻思递归,并且记录中间过程的数据,这样避免重复计算。但是超时了。class Solution {public: in... 阅读全文
    posted @ 2014-06-18 20:55 qingcheng奕 阅读(177) 评论(0) 推荐(0)
  • LeetCode OJ--Unique Paths II **
    摘要:https://oj.leetcode.com/problems/unique-paths-ii/图的深搜,有障碍物,有的路径不通。刚开始想的时候用组合数算,但是公式没有推导出来。于是用了深搜,递归调用。但是图最大是100*100,太大了,超时。考虑到在计算(2,1)和(1,2)都用到了(2,2),... 阅读全文
    posted @ 2014-06-18 10:57 qingcheng奕 阅读(171) 评论(1) 推荐(0)
  • LeetCode OJ--Unique Paths *
    摘要:https://oj.leetcode.com/problems/unique-paths/首先,转换成一个排列组合问题,计算组合数C(m+n-2) (m-1),请自动想象成上下标。class Solution {public: int uniquePaths(int m, int n) { ... 阅读全文
    posted @ 2014-06-17 20:01 qingcheng奕 阅读(177) 评论(1) 推荐(0)
  • LeetCode OJ--Path Sum II **
    摘要:https://oj.leetcode.com/problems/path-sum-ii/树的深搜,从根到叶子,并记录符合条件的路径。注意参数的传递,是否需要使用引用。#include #include using namespace std;struct TreeNode { int va... 阅读全文
    posted @ 2014-06-17 09:45 qingcheng奕 阅读(188) 评论(0) 推荐(0)
  • LeetCode OJ--Path Sum *
    摘要:https://oj.leetcode.com/problems/path-sum/树的深搜,求从根到叶子的路径。记住深搜的样子#include using namespace std;struct TreeNode { int val; TreeNode *left; Tr... 阅读全文
    posted @ 2014-06-16 09:07 qingcheng奕 阅读(151) 评论(0) 推荐(0)
  • LeetCode OJ--Sort Colors
    摘要:https://oj.leetcode.com/problems/sort-colors/0,1,2对这三个数组成的序列,扫描一遍的排序。class Solution {public: void sortColors(int A[], int n) { int x = -1, y... 阅读全文
    posted @ 2014-06-15 18:29 qingcheng奕 阅读(111) 评论(0) 推荐(0)
  • LeetCode OJ--Single Number II **
    摘要:https://oj.leetcode.com/problems/single-number-ii/有一列数,其中有1个数的个数不是3的倍数,求出这个数。学习了别人的思路,按照二进制,统计每个位上1的个数,3个相同的数的话,它们的二进制表示是相同的,则同一个位置上,必然1的个数是3,所以 % 3,变... 阅读全文
    posted @ 2014-06-14 21:23 qingcheng奕 阅读(115) 评论(0) 推荐(0)
  • LeetCode OJ--Single Number
    摘要:https://oj.leetcode.com/problems/single-number/给一个数列,其中只有一个数不是两两相同的,在O(n)时间内求出来,并且不使用额外空间。使用异或操作,如果是两个相同的数异或的话,就都消去了。异或操作的单位元是0.#include using namespa... 阅读全文
    posted @ 2014-06-14 09:57 qingcheng奕 阅读(129) 评论(0) 推荐(0)
  • LeetCode OJ--Subsets II
    摘要:https://oj.leetcode.com/problems/subsets-ii/求一个集合的子集,但集合中有重复元素。求子集的问题,对应着数的二进制,相当于对二进制的一个遍历。#include #include #include using namespace std;class Solut... 阅读全文
    posted @ 2014-06-14 09:46 qingcheng奕 阅读(147) 评论(0) 推荐(0)
  • LeetCode OJ--ZigZag Conversion
    摘要:https://oj.leetcode.com/problems/zigzag-conversion/将字符串Z形字排列后,再重新一行一行输出。可以找到每一行字符位置的规律,然后填充进去。敲代码之前,先演算好了,每个变量是怎样表达的,规律到底是什么样的。#include #include #incl... 阅读全文
    posted @ 2014-06-13 21:53 qingcheng奕 阅读(140) 评论(0) 推荐(0)
  • LeetCode OJ--Permutation Sequence *
    摘要:求第k个排列。刚开始按照一个排列一个排列的求,超时。于是演算了一下,发下有数学规律,其实就是康托解码。康托展开:全排列到一个自然数的双射X=an*(n-1)!+an-1*(n-2)!+...+ai*(i-1)!+...+a2*1!+a1*0!ai为整数,并且0 fractial; fr... 阅读全文
    posted @ 2014-06-13 15:52 qingcheng奕 阅读(169) 评论(0) 推荐(0)
  • LeetCode OJ--Next Permutation *
    摘要:求一个排列的下一个排列。1,2,3→1,3,23,2,1→1,2,31,1,5→1,5,1#include #include #include using namespace std; class Solution{public: void nextPermutation(vector &nu... 阅读全文
    posted @ 2014-06-12 20:08 qingcheng奕 阅读(175) 评论(0) 推荐(0)
  • LeetCode OJ--Permutations II
    摘要:给的一个数列中,可能存在重复的数,比如 1 1 2 ,求其全排列。记录上一个得出来的排列,看这个排列和上一个是否相同。#include #include #include using namespace std; class Solution{public: vector > permuteU... 阅读全文
    posted @ 2014-06-12 19:50 qingcheng奕 阅读(178) 评论(0) 推荐(0)
  • LeetCode OJ--Permutations *
    摘要:https://oj.leetcode.com/problems/permutations/写出一列数的全排列#include #include #include using namespace std; class Solution{public: vector > permute(vect... 阅读全文
    posted @ 2014-06-12 19:43 qingcheng奕 阅读(164) 评论(0) 推荐(0)
  • 小算法-计算下一个排列
    摘要:2 8 5 3 11.从后往前,找到第一个逆序的数 pivot2.从后往前,找到第一个比pivot大的数 change3.交换 pivot 和 change的值4.把pivot这个位置后面的数 reverse,就是 8 5 2 1变成 1 2 5 8最终为3 1 2 5 8#include #inc... 阅读全文
    posted @ 2014-06-12 19:21 qingcheng奕 阅读(264) 评论(0) 推荐(0)