leetcode
文章平均质量分 62
DallasSeller
这个作者很懒,什么都没留下…
展开
-
Unique Paths & Unique Paths II
Unique Paths原创 2014-11-08 19:44:01 · 513 阅读 · 0 评论 -
Find Minimum in Rotated Sorted Array && Find Minimum in Rotated Sorted Array II
Find Minimum in Rotated Sorted Array我的思路:1、在一个旋转数组中找到最小的那个数,只需要找到旋转的那个点就可以了。特殊情况没有旋转或者说旋转点在-1这个下标,返回num[0],如果只有一个数也返回num[0]。2、由于没有重复的数,设定两个下标,从两头往中间找。当左边的值比右边小的时候停止循环。3、如果begin == end,说明原创 2014-12-07 19:18:19 · 485 阅读 · 0 评论 -
Excel Sheet Column Number && Roman to Integer && Integer to Roman && Reverse Integer && Palindrome N
Excel Sheet Column Number我的思路:1、进制转换。代码如下: int titleToNumber(string s) { int ans = 0; for (int i = 0; i < s.size(); i++) ans = ans * 26 + s[i] - 64;原创 2015-02-01 14:38:35 · 511 阅读 · 0 评论 -
Remove Duplicates from Sorted List && Merge Two Sorted Lists && Linked List Cycle && Remove Nth Node
Remove Duplicates from Sorted List1、已排序的链表删除相同的数据。 ListNode *deleteDuplicates(ListNode *head) { ListNode *p = head; int temp; while (p != NULL) { te原创 2015-02-03 17:05:43 · 568 阅读 · 0 评论 -
Single Number && Single Number II && Factorial Trailing Zeroes && Pow(x, n) && Add Two Numbers
Single Number1、异或交换性质 int singleNumber(int A[], int n) { int ans = A[0]; for (int i = 1; i < n; i++) ans ^=A[i]; return ans; }原创 2015-02-01 22:00:32 · 555 阅读 · 0 评论 -
Insertion Sort List && Remove Duplicates from Sorted List II && Intersection of Two Linked Lists
Insertion Sort List1、插入排序,用了个头节点。2、天气太冷,冻得写出来的代码就是翔。 ListNode *insertionSortList(ListNode *head) { if (head == NULL) return NULL; ListNode *p = head->next;原创 2015-02-04 17:38:42 · 611 阅读 · 0 评论 -
Rotate List
Rotate List 我的思路: 1、将一个链表旋转,这个和找出倒数第几个数差不多。 2、改成循环链表,得到链表长度,便可以得到结果。ListNode *rotateRight(ListNode *head, int k) { if (head == NULL) return head; ListNode *tail = head; int len =原创 2015-02-14 15:30:30 · 426 阅读 · 0 评论 -
Compare Version Numbers
Compare Version Numbers 思路: 1、比较版本的题目。 2、用”.”来判断数字,写一个用来处理中间数字的函数。当两个字符串都到达末尾的时候就结束。class Solution {public: int compareVersion(string version1, string version2) { int i = 0, j = 0;原创 2015-03-02 16:36:45 · 411 阅读 · 0 评论 -
Number of 1 Bits && Rotate Array && Reverse Bits
Number of 1 Bits我的思路:1、这题是找出一个二进制数中有多少个1。2、我想是和1相与,然后循环移位一直32次,让一个数来计数就可以了。代码如下: int hammingWeight(uint32_t n) { int ans = 0; int i = 32; while (i--) {原创 2015-03-10 21:01:34 · 477 阅读 · 0 评论 -
[LeetCode OJ]Min Stack
Min Stack我的思路: 1、最小栈要求能在O(1)时间内取到栈内最小值。 2、定义两个栈,一个用来保存最小值。在入栈的时候如果当前值比最小栈的值还要小就Push,如果不是就算了。在出栈的时候,如果出栈元素等于最小栈栈顶元素,最小栈也出栈,否则算了。public: void push(int x) { if (!data.empty()) {原创 2015-03-11 10:28:16 · 527 阅读 · 0 评论 -
[LeetCode OJ]ZigZag Conversion && Valid Sudoku && String to Integer (atoi)
ZigZag Conversion我的思路: 1、将一个锯齿状排列的字符串拉成一条线,输入到一个新的字符串中。 2、只要弄清楚循环的特征,算好nRows的变化给循环带来的变化,还是很容易完成。 string convert(string s, int nRows) { string ans; for (int i = 1; i <= nRows; i++)原创 2015-03-11 09:51:17 · 506 阅读 · 0 评论 -
[LeetCode OJ]Count and Say && Valid Palindrome && Longest Common Prefix
Count and Say 我的思路: 1、数着说,1叫做11,11叫做21(两个1),接着往下数21叫做1211,不断往下数n代,求结果。 2、刚看到Discuss区一个5ms的有3个赞同,我的2ms。 string countAndSay(int n) { string ans("1"); if (n == 1) return a原创 2015-03-11 10:13:23 · 410 阅读 · 0 评论 -
[LeetCode OJ]Length of Last Word && Excel Sheet Column Title
Length of Last Word1、计算最后一个字符的长度 2、两个指针移动。 int lengthOfLastWord(const char *s) { int p1 = 0, p2 = 0, ans = 0; bool flag = false; while (s[p1] != '\0') { if (!fla原创 2015-03-11 10:22:18 · 584 阅读 · 0 评论 -
[LeetCode OJ]Implement strStr()
Implement strStr()我的思路: 1、实现字符串匹配算法。 2、我知道比较出名的是KMP算法,在算法导论上有。 3、思路是先算出needle字符串中相同前缀后缀的长度,然后在主函数中依据这个信息来加速匹配过程。class Solution {public: int strStr(char *haystack, char *needle) { int hl原创 2015-03-11 09:01:15 · 480 阅读 · 0 评论 -
Search a 2D Matrix
Search a 2D Matrix我的思路:1、在一个排好序的二维数组中找目标数,返回成功或者失败。2、二分查找,首先在列上找值,定位到哪一行之后,在行内二分查找。复杂度是log(n) + log(m)。代码如下: bool searchMatrix(vector > &matrix, int target) { int n = matrix.size(原创 2015-01-31 16:19:36 · 436 阅读 · 0 评论 -
[LeetCode OJ]Symmetric Tree
Symmetric Tree这题在剑指Offer上有,思路也是采用书上的。使用两个遍历顺序,两个顺序是对称的。这样就是实现了判断对称与否,一个使用先序,一个使用先序中先遍历右子树。代码如下: bool isSymmetric(TreeNode *root) { return isSymmetric(root, root); } bool i原创 2015-04-01 20:25:08 · 519 阅读 · 0 评论 -
Search in Rotated Sorted Array && Search in Rotated Sorted ArrayII
Search in Rotated Sorted Array我的思路:1、在一个没有重复数字,已经排序好的,旋转过的数组中找到一个数,返回数组中的下标,如果没有返回-1。2、找到旋转的轴,然后进行两段二分查找。3、关键是找到mid这个点。我使用的是两个指针从后面往前遍历查找。class Solution {public: int search(int A[原创 2014-12-05 10:09:16 · 593 阅读 · 0 评论 -
Container With Most Water
Container With Most Water我的思路:1、给一个数列,每个值相当于长方形的高,一个数列相当于有很多条高,求出最大的面积是多少?2、这里也是想到了两个指针往中间移动,但是写的代码非常复杂。思路非常混乱。不忍直视,下面是没有通过的代码: int begin = 0, end = height.size() - 1, low = height[begi原创 2014-12-09 20:53:26 · 520 阅读 · 0 评论 -
Climbing Stairs
Climbing Stairs原创 2014-10-27 09:15:50 · 543 阅读 · 0 评论 -
Spiral Matrix && Spiral MatrixII
Spiral Matrix原创 2014-11-07 22:00:44 · 566 阅读 · 0 评论 -
Search Insert Position
Search Insert Position我的思路:1、在一个排序好的序列中,找一个数,返回下标值,如果没有返回插入点的下标值。2、顺序查找。代码如下: int searchInsert(int A[], int n, int target) { if (n <= 0) return 0; for (int i =原创 2014-11-26 17:08:00 · 570 阅读 · 0 评论 -
Maximum Subarray(最大子数组)
Maximum Subarray我的思路:1、以前是有做过hdoj上一个最长递增子序列的,想想那个比较麻烦,然后我使用和卖股票一样的算法。还把数组转换了一次,想想真是傻。2、下面是我要丑哭的代码。实在不想贴出来。 int maxSubArray(int A[], int n) { if (n < 0) return 0;原创 2014-11-26 20:48:29 · 571 阅读 · 0 评论 -
Two Sum
Two Sum原创 2014-11-05 17:04:45 · 503 阅读 · 0 评论 -
Plus One解题报告分析
Plus One原创 2014-10-21 15:43:53 · 637 阅读 · 0 评论 -
Pascal's Triangle & Pascal's Triangle II
Pascal's Triangle杨辉三角,或者叫怕死原创 2014-10-22 13:58:42 · 536 阅读 · 0 评论 -
Set Matrix Zeroes
Set Matrix Zeroes我的思路:1、这里给出一个矩阵,如果里面的某一个值是0,就把该行该列全都置0。2、最简单的是开一个一摸一样大的数组;或者使用两个数组,一个大小等于行大小,一个等于列大小;或者只使用两个位,来标记第一行和第一列有没有0值出现。3、我就是用第二种思路,被自己蠢哭了,一个内存设置函数写错了。代码如下: void setZeroes(原创 2014-11-30 20:46:01 · 757 阅读 · 0 评论 -
Sort Colors
Sort Colors我的思路:1、在一个数组中用三种数字代表san ge原创 2014-11-08 13:41:02 · 453 阅读 · 0 评论 -
Best Time to Buy and Sell Stock I && II && III
Best time to Buy and Sell Stock原创 2014-11-23 21:18:02 · 775 阅读 · 0 评论 -
Merge Sorted Array & Remove Element & Remove Duplicates from Sorted Array
Merge Sorted Array原创 2014-10-20 15:18:16 · 598 阅读 · 0 评论 -
Remove Duplicates from Sorted Array && Remove Duplicates from Sorted Array II
Remove Duplicates from Sorted Array移除数组中相同的元素。这题和上题是类似的。我的思路:1 有了上题的经验,两个指针移动,相等的时候不做任何动作,循环会让后面的指针一直移动到和前面的指针不相等的时候,再把值赋给前面的指针后一个。注意:一定要判断是空数组的情况,也就是n小于1的时候。 if (n < 1)原创 2014-12-02 10:04:17 · 445 阅读 · 0 评论 -
Find Peak Element
Find Peak Element我的思路:1、这题没看明白,题目是说找一个数组中的峰值元素,只要这个数比两边的数都大就算,数组中没有重复的数。2、题目要求用log(n)算法,我没想,就用两个指针,从两边一起扫描,看起来快一倍,其实是一样的。3、log(n)算法分析:如果是上坡也及时if判断成功,那说明峰值在mid + 1或者之后,如果在else那么峰值在mid或者之后原创 2014-12-07 20:13:45 · 743 阅读 · 0 评论 -
Majority Element
Majority Element我的思路: 1、题目要求:找出一个vector int型数据中出现的大于n/2的数,假如5个数,该数出现至少3次,如果是4个数也是,因为要比n/2大。这个数一定存在。2、别人思路1:每次找两个数,成对删除,最后剩下的那一个(两个)数一定是要找的数。想想vector删除数的操作,这个是比较麻烦的,虽然现在还没看过源码,但是想想也知道,这个比nlog原创 2015-01-30 17:58:25 · 503 阅读 · 0 评论 -
Rotate Image
Rotate Image我的思路:1、顺时针将n * n的矩阵在旋转90度,空间复杂度O(1)。2、双重循环,单个循环内将每条边的数据赋值,使用一个临时变量保存最后一个要赋值的数据值。3、写好每个控制变量,6ms过,讨论区还有一些其他方法,都差不多。考虑好矩阵旋转的特性。代码如下: void rotate(vector > &matrix) { in原创 2015-01-30 20:08:29 · 655 阅读 · 0 评论 -
[LeetCode OJ]Valid Number
Valid Number我的思路:1、这题是判断一个字符串是否是一个数字。这题在剑指Offer上有,我这边的代码主体是参考了那上面的,针对LeetCode的另一些特殊情况,有修改。2、思路如下:如果是空字符串,返回否。接着,跳过前面的空格,如果当前字符是正负号,那么下一个,如果结束了,就返回错误,没有就去扫描数字的长度,接着扫描空格的长度,如果没有空格,而且没有结束,判断是否是原创 2015-03-31 21:07:26 · 519 阅读 · 0 评论