LeetCode
ivebeenready
这个作者很懒,什么都没留下…
展开
-
LeetCode_ZigZag Conversion_006
这一题不难,但是我因为没有加上特殊条件检测 if( numRows 所以提交很多次都没有通过,真的是细节决定AC啊!!!class Solution{public: std::string convert(std::string s, int numRows){ int len1 = s.size(); if (numRows <= 1) retur原创 2015-08-23 14:34:16 · 364 阅读 · 0 评论 -
leetcode_019Remove Nth Node From End of List
移除单链表倒数第N个节点。测试平台是没有头结点的单链表!!!我最开始写的是带头结点的,所以测试不通过。这是弄了两个指针。ListNode* removeNthFromEnd(ListNode* head, int n) { ListNode* temp = head; int i = 0; while (temp != NULL) { ++i; temp = temp->n原创 2015-08-29 23:28:49 · 326 阅读 · 0 评论 -
leetcode 024 swap nodes in pairs
交换相邻的两个节点,这个代码比较直观,就是先创建一个头结点,作为prev,还创建了一个swap函数交换两个指针。ListNode * swap(ListNode *A, ListNode *B) { if(!B) return A; A->next=B->next; B->next=A; return B; }原创 2015-09-01 20:58:28 · 406 阅读 · 0 评论 -
leetcode——Two Sum_1
http://blog.csdn.net/jiadebin890724/article/details/23305449第一次做,没有经验,上来就用暴力求解,结果超时了。链接中的文章写得不错,可以参考。转载 2015-08-21 09:59:39 · 321 阅读 · 0 评论 -
leetcode GrayCode 递归
Binary Code 转换为Gray Code。如: Binary Code :1011 要转换成Gray Code 1011 = 1(照写第一位), 1(第一位与第二位异或 1^0 = 1), 1(第二位异或第三位, 0^1=1), 0 (1^1 =0) = 1110 其实就等于 (1011 >> 1) ^ 1011 = 1110void gr原创 2015-09-07 09:32:20 · 379 阅读 · 0 评论 -
LeetCode - Longest SubString without repeating characters_003
首先用了时间复杂度为O(n^2)的方法,耗时比较长,花了216ms(好忧伤,自己首先想到的方法总是很耗时间。。。。)class Solution {public: int lengthOfLongestSubstring(string s) { vector ivec; for (int i = 0; i != s.size(); ++i) { string原创 2015-08-22 13:17:24 · 285 阅读 · 0 评论 -
LeetCode-Add Two Numbers_002
最容易想到的就是把链表里面的数取出来按倒序组成数,然后两个链表中的数字相加得到一个新数再把这个数拆开放到链表里面。 注意要用long 型,用int 型会溢出。这个方法如果输入的数字再多一点就没法求了,毕竟long型也是有限的。运行了40msListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { ListNode *result,*原创 2015-08-21 21:45:01 · 540 阅读 · 0 评论 -
median of two sorted arrays
感觉这一题不难啊。用最常规的归并排序之后,找出中间的就行了。虽然不是最简单的方法,但一定是最方便的。class Solution {public: double findMedianSortedArrays(vector& nums1, vector& nums2){ vector tmp(nums1.size() + nums2.size()); int i =原创 2015-09-14 22:38:25 · 339 阅读 · 0 评论 -
leetcode_29——Divide Two Integers
Divide two integers without using multiplication, division and mod operator.If it is overflow, return MAX_INT.比如我们想计算100/3的值,那么先找到一个3*2^n的数,这个数是最接近100并小于100的数,得到n = 5;然后计算100 - 3*2^5 = 4,用原创 2015-10-11 15:20:14 · 476 阅读 · 0 评论 -
leetcode 031 Next Permutation
STL里面其实有next_permutation()函数,这个函数实现原理是:在当前序列中,从尾端往前寻找两个相邻元素,前一个记为*i,后一个记为*ii,并且满足*i stl源码如下:templatebool next_permutation( BidirectionalIterator first, BidirectionalIterator last){原创 2015-08-30 21:51:46 · 327 阅读 · 0 评论 -
leetcode 021_merge two list
题目让吧两个链表连接起来,并且要按大小顺序排列好。我用的方法比较复杂,花了24ms ListNode* creat(vector &ivec){ ListNode* newnode; ListNode* head; if (ivec.empty()) return NULL; newnode = new ListNode(ivec[0]); if (newnode == N原创 2015-08-30 19:33:43 · 389 阅读 · 0 评论 -
leetcode_3sum closet
和上一篇的类似,也是用O(N^2)的方法,先排序,然后找三个位置加起来与2做差比较绝对值class Solution {public: int threeSumClosest(vector& nums, int target) { int result = 0, minn = abs(nums[0] + nums[1] + nums[2] - target), temp =原创 2015-08-29 15:50:24 · 288 阅读 · 0 评论 -
LeetCode_reverse integer_007
一次性提交代码运行时间8ms,战胜100%的玩家!!哈哈哈,这一题很简单,但是如果不提前看看spoiler的话还是容易考虑不全。注意两点即可,123000转化后前面的0要去掉;不能超出整形数据的最大范围。最开始我不太清楚整形数据范围就自己计算。int max = ~(unsigned int)0 / 2);//计算最大数int min = -max - 1;//最小数其实在limi原创 2015-08-24 16:56:42 · 387 阅读 · 0 评论 -
leetcode_palindrome number_009
这一题也很简单,用了80ms,ac代码如下。思路就是:把各个位数据的ASCII码存在string中,然后用迭代器和反向迭代器查找对比,迭代一半的长度即可。 bool isPalindrome(int x) { if (x < 0) return false; if(x == 0) return true; string result; int val = x;原创 2015-08-24 22:16:09 · 401 阅读 · 0 评论 -
010_leetcode Container With Most Water
我最开始写的O(n^2) 的无法通过,从头遍历到结尾int maxArea(vector& height) { int size = height.size(); int max = 0; for (int i = 0; i != size; ++i) for (int j = i + 1; j != size; ++j) { int volume = (height[i原创 2015-08-25 10:54:07 · 338 阅读 · 0 评论 -
010 leetcode Integer to Roman
转换起来还比较麻烦,按照每个位来转化,先从最后面开始。如果这一位在1~3之间,那么就把这个位的罗马字符添到字符串前面;如果这一位等于4,那么就把当前罗马字符+这个位前,一位的罗马字符 + 字符串连接起来;如果这一位在5~8之间,那么就把这个位置前面一位的罗马字符 + 当前罗马字符 + 字符串连接起来;如果这一位等于9,那么就把当前字符 +前两位字符 +字符串连接起来;代码如下,原创 2015-08-25 13:47:11 · 360 阅读 · 0 评论 -
leetcode_014_Longest Common Prefix
一定注意要判断vector是否为空,其余没什么好说的class Solution {public: string longestCommonPrefix(vector& strs) { if (strs.empty()) return ""; for (int i = 0; i < strs[0].size(); ++i) { for (int j = 1; j原创 2015-08-27 17:16:21 · 250 阅读 · 0 评论 -
leetcode 4sum
前面已经做了2sum,3sum之类的了,其实这些t-sum都可以归纳为O(n-1 ^ (t-1))复杂度。先排序, vector> fourSum(vector& nums, int target) { vector > result; sort(nums.begin(), nums.end()); for (int i = 0; i < nums.size(); ++i) { f原创 2015-08-29 21:42:35 · 283 阅读 · 0 评论 -
Leetcode_016 Letter Combinations of a Phone Number
这一题比较简答,但是这么简单的题我都敲了30多分钟,结果还有问题,修改,最后花了1个小时。。。。只能感叹自己水平太渣了,不熟练class Solution {public: vector letterCombinations(string digits) { vector svec{ " ","", "abc","def","ghi","jkl","mno","pqr原创 2015-08-29 17:14:52 · 367 阅读 · 0 评论 -
leetcode 019_Valid Parentheses
判断括号是否正确;bool isValid(string s){ int j = 0,n = 0; string stack = s; while (n != s.size()) { switch (s[n]) { case '(': stack[j++] = '('; break; case '[': stack[j++] = '['; br原创 2015-08-30 16:03:24 · 366 阅读 · 0 评论 -
leetcode_30 Next Permutation
Implement next permutation, which rearranges numbers into the lexicographically next greater permutation of numbers.If such arrangement is not possible, it must rearrange it as the lowest possible原创 2015-10-11 16:33:40 · 436 阅读 · 0 评论