Leetcode
Snail_Walker
Google Senior Machine Learning Tech Lead | 行胜于言
展开
-
Leetcode 477: hamming distance
之前的算法是O(n^3)的,速度比较慢,果然TLE了。这里把计算hamming_distance也算一层。class Solution {public: static int HammingDistance(int a, int b) { int c = a ^ b; int dis = 0; while(c > 0)原创 2017-01-08 19:59:20 · 299 阅读 · 0 评论 -
Leetcode 405: Convert a Number to Hexadecimal
这题比较简单,不过要注意num为0的情况。class Solution {public: string toHex(int num) { string result; unsigned int tmp_num = num; if(!num) return "0"; while(tmp_num)原创 2017-01-08 22:11:05 · 258 阅读 · 0 评论 -
Leetcode: 401. Binary Watch
这里我提出两种做法,一种呢就是把每个bit分开,这种写法很直接;一种是根据10bits的大小进行一次迭代,看哪些数字符合要求。第一种方法:非常lowclass Solution {public: vector<string> readBinaryWatch(int num) { vector<string> result; for(int h4 = 0; h4原创 2017-01-09 00:21:13 · 247 阅读 · 0 评论 -
Leetcode 152: maximum product sum
class Solution {public: int maxProduct(vector<int>& nums) { int result = nums[0]; int nums_len = nums.size(); int pos = 0; int neg = 0; for(int i = 0; i < nu原创 2017-01-09 00:24:26 · 333 阅读 · 0 评论 -
Leetcode 162. Find Peak Element
class Solution {public: int findPeakElement(vector<int>& nums) { int nums_len = nums.size(); int result = INT_MIN; int index = 0; for(int i = 0; i < nums_len; i++)原创 2017-01-09 00:27:00 · 249 阅读 · 0 评论 -
Leetcode 238. Product of Array Except Self
这里需要对累乘有比较充分的了解,那么做起来就很轻松。class Solution {public: vector<int> productExceptSelf(vector<int>& nums) { int nums_len = nums.size(); vector<int> begin_vec(nums_len, 1); int las原创 2017-01-09 00:28:46 · 236 阅读 · 0 评论 -
Leetcode 442. Find All Duplicates in an Array
找到重复项,用map应该更简单。class Solution {public: vector<int> findDuplicates(vector<int>& nums) { vector<int> result; sort(nums.begin(), nums.end()); int nums_len = nums.size() - 1;原创 2017-01-09 00:30:54 · 213 阅读 · 0 评论 -
Leetcode 347. Top K Frequent Elements
typedef pair<int, int> PAIR; class Solution {public: static int cmp(const PAIR &x, const PAIR &y) { return x.second > y.second; } vector<int> topKFrequent(vector<int>& n原创 2017-01-09 00:33:05 · 212 阅读 · 0 评论 -
Leetcode 264. Ugly Number II
class Solution {public: int nthUglyNumber(int n) { set<long long> ugly_set; int cur_num = 1; const int coff[3] = {2,3,5}; ugly_set.insert(1); while(cur_num <原创 2017-01-09 00:34:19 · 272 阅读 · 0 评论 -
Leetcode 451. Sort Characters By Frequency
typedef pair<char, int> PAIR; class Solution {public: static int cmp(const PAIR &x, const PAIR &y) { return x.second > y.second; } string frequencySort(string s) {原创 2017-01-09 00:35:59 · 287 阅读 · 0 评论 -
Leetcode 451. Sort Characters By Frequency
非常典型的栈的应用。class Solution {public: string decodeString(const string s) { int s_len = s.length(); stack<string> s_p; string tmp = ""; int repet = 0; int num_d原创 2017-01-09 00:37:29 · 235 阅读 · 0 评论 -
Leetcode 456. 132 Pattern
这里考虑从后面往前面走,这样的话就不是计算中间值,而是计算最小值。时间就是O(n)了。class Solution {public: bool find132pattern(vector<int>& nums) { vector<int> range_value; int tmp_left; int tmp_val = 0;原创 2017-01-09 00:39:47 · 254 阅读 · 0 评论 -
leetcode 215. Kth Largest Element in an Array
class Solution {public: int partition(vector<int>& nums, int left, int right) { int pivot = nums[left]; int l = left + 1, r = right; while (l <= r) { if (nums[l原创 2017-01-09 00:42:09 · 200 阅读 · 0 评论 -
leetcode 26. Remove Duplicates from Sorted Array
class Solution {public: int removeDuplicates(vector<int>& nums) { int count = 0; int lastTemp = -99999; int Temp = 0; for(vector<int>::iterator iter=nums.begin(); i原创 2017-01-09 00:44:44 · 222 阅读 · 0 评论 -
leetcode 397. Integer Replacement
开始想的是采用类似于广度搜索图的算法计算,发现它超时了。超时的版本如下:class Solution {public: typedef struct trace { int num; int residual; }TRACE; int integerReplacement(int n) { int rel = INT_M原创 2017-01-09 11:30:28 · 314 阅读 · 0 评论 -
leetcode 338. Counting Bits
这题简单的思路就是O(n*size(num)),但是要改成O(n)就没有那么简单了。class Solution {public: static int count_one(int i) { int dis = 0; while(i) { if(i&1) dis++;原创 2017-01-09 11:52:18 · 258 阅读 · 0 评论 -
leetcode 141. Linked List Cycle
这道题采用的比较典型的龟兔赛跑的思想,用更快的兔子套乌龟,如果存在环的话就会在兔子最终会抓到乌龟的。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} *原创 2017-01-13 15:28:23 · 205 阅读 · 0 评论 -
leetcode 83. Remove Duplicates from Sorted List
法一:遍历一遍,如果发现重复的就去掉这个节点。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {pu原创 2017-01-13 16:18:02 · 183 阅读 · 0 评论 -
leetcode 24. Swap Nodes in Pairs \ 21. Merge Two Sorted Lists
这个算法就是把前后节点交换为知,记住每个节点存储在内存中某个地方,指向每个节点的地址是一样,不一样的是每个节点的下一个节点的地址,改变这个即可。法一:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) :原创 2017-01-13 19:56:29 · 306 阅读 · 0 评论 -
leetcode stack 232. Implement Queue using Stacks
法一:使用两个栈模拟队列。class Queue {private: stack<int> q_input; stack<int> q_output;public: // Push element x to the back of queue. void push(int x) { q_input.push(x); } // Remo原创 2017-01-14 23:17:49 · 352 阅读 · 0 评论 -
27. Remove Element \ 66. Plus One \ 88. Merge Sorted Array
27. Remove Element法一:class Solution {public: int removeElement(vector<int>& nums, int val) { for(vector<int>::iterator it = nums.begin(); it != nums.end();) { if(*it =原创 2017-01-15 18:18:24 · 360 阅读 · 0 评论 -
485. Max Consecutive Ones \ 118. Pascal's Triangle
Pascals Triangle 法一:class Solution {public: int findMaxConsecutiveOnes(vector<int>& nums) { int result_max = 0; int nums_len = nums.size(); int tmp = 0; if(!nums_len原创 2017-01-15 19:36:09 · 398 阅读 · 0 评论 -
leetcode 445. Add Two Numbers II
用栈先存着两个node的东西,再pop出来相加。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {p原创 2017-01-10 19:50:07 · 320 阅读 · 0 评论 -
leetcode 328. Odd Even Linked List
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* odd原创 2017-01-10 22:04:01 · 254 阅读 · 0 评论 -
237 Delete Node in a Linked List
题目没有说清楚意思。Node不能更改,只需要把node删除后面的节点。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class S原创 2017-01-10 22:51:29 · 219 阅读 · 0 评论 -
leetcode 234. Palindrome Linked List
这道题目笔记简单。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: bool原创 2017-01-11 00:06:03 · 330 阅读 · 0 评论 -
leetcode 206. Reverse Linked List
法一:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode*原创 2017-01-11 10:32:46 · 196 阅读 · 0 评论 -
leetcode 203. Remove Linked List Elements
我觉得在使用链表的时候一般有两种思路:一种是链表的内容可以修改,在原链表上进行处理,后续的操作不需要使用原链表的内容的时候这种思路可以节约空间和时间;另外一种是当我们不能更改链表的内容,后续需要用到的时候,这时候需要自己开辟空间。不需要自己创建节点的方法:/** * Definition for singly-linked list. * struct ListNode { * int原创 2017-01-11 11:10:00 · 378 阅读 · 0 评论 -
leetcode 160 Intersection of Two Linked Lists
一种比较直接的想法就是套圈的做法。还有就是这里的交点是节点的地址。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Sol原创 2017-01-11 11:36:00 · 246 阅读 · 0 评论 -
greedy: 55. Jump Game \ 455. Assign Cookies
Jump Game题目描述代码实现Assign Cookies题目描述代码实现55. Jump Game题目描述 Given an array of non-negative integers, you are initially positioned at the first index of the array. Each element in the array repre原创 2017-02-07 00:10:09 · 324 阅读 · 0 评论 -
sort: 349. Intersection of Two Arrays \ 350. Intersection of Two Arrays II
Intersection of Two Arrays题目描述解题Intersection of Two Arrays II题目描述代码实现349. Intersection of Two Arrays题目描述Given two arrays, write a function to compute their intersection.Example: Given nums1 = [1,原创 2017-02-07 00:55:06 · 629 阅读 · 0 评论 -
40. Combination Sum II \ 46. Permutations \ 47. Permutations II
Combination Sum IIPermutations40. Combination Sum IIclass Solution {public: void combinationSumBT(vector<vector<int> > & rel, int stt, int &last, vector<int> &candidates, vector<int> &tmp, int ta原创 2017-02-05 22:52:19 · 255 阅读 · 0 评论 -
28. Implement strStr() 以及KMP算法的实现
28. Implement strStr()题目描述Implement strStr().Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.代码实现这里需要注意的是不需要把母字符串全部迭代一次,只需要到还剩下子串长度的索引地方。 代码一:c原创 2017-02-07 13:01:45 · 738 阅读 · 0 评论 -
448. Find All Numbers Disappeared in an Array \ 414. Third Maximum Number
448法一:class Solution {public: vector<int> findDisappearedNumbers(vector<int>& nums) { int nums_len = nums.size(); vector<int> result; int *bucket = new int[nums_len+1]();原创 2017-01-16 15:04:15 · 269 阅读 · 0 评论 -
leetcode 19. Remove Nth Node From End of List
这道题我就是用一个节点把链表遍历,一个节点保存之前的节点,当遇到想删的节点的时候删除之后,删除节点的下一个节点连接到之前保存的节点。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x),原创 2017-01-11 23:57:49 · 331 阅读 · 0 评论 -
C++二叉树遍历总结\100. Same Tree
理论学习概念介绍遍历图解遍历算法代码实践实现模板理论学习概念介绍二叉树的遍历分成前序、中序、后序遍历。前序就是访问结点的操作发生在遍历其左右子树之前。 中序就是访问结点的操作发生在遍历其左右子树之中,一般是遍历左边子树以后。 后序就是访问结点的操作发生在遍历其左右子树之后。这里可以参考【1】中,对数据结构做了一个整理。遍历图解 图中每个节点经过了3次。先序为: A B D C E F原创 2017-02-15 14:45:29 · 529 阅读 · 0 评论 -
101. Symmetric Tree\104. Maximum Depth of Binary Tree\111. Minimum Depth of Binary Tree
Symmetric Tree题目描述代码实现Maximum Depth of Binary Tree题目描述代码实现Minimum Depth of Binary Tree题目描述代码实现101. Symmetric Tree题目描述Given a binary tree, check whether it is a mirror of itself (ie, symmetric a原创 2017-02-16 15:33:06 · 465 阅读 · 0 评论 -
412. Fizz Buzz \ 404. Sum of Left Leaves
412法一:class Solution {public: vector<string> fizzBuzz(int n) { vector<string> result; for(int i = 1; i <= n; i++) { char tmp[10]; if(!(i % 15))原创 2017-01-17 15:41:27 · 337 阅读 · 0 评论 -
62. Unique Paths \ 63. Unique Paths II
Unique Paths题目描述解法描述Unique Paths II题目描述实现代码62. Unique Paths题目描述A robot is located at the top-left corner of a m x n grid (marked ‘Start’ in the diagram below).The robot can only move either down o原创 2017-02-08 15:40:26 · 618 阅读 · 0 评论 -
20. Valid Parentheses \ 71. Simplify Path
Valid Parentheses题目描述代码实现Simplify Path题目描述代码实现20. Valid Parentheses题目描述括号匹配:Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.Th原创 2017-02-08 16:17:31 · 400 阅读 · 0 评论