Leetcode
二进制玩家
这个作者很懒,什么都没留下…
展开
-
leetcode 6. ZigZag Conversion
原始超时版本char* convert(char* s, int numRows) { if(numRows=strlen(s)) return s; int slen=strlen(s); int rowlen=slen; char t[1000*1000]; //char *t = malloc(sizeof(char) * (numRow原创 2018-01-09 00:37:44 · 133 阅读 · 0 评论 -
[Leetcode ]225. Implement Stack using Queues
class MyStack {private: queue<int> q1;public: /** Initialize your data structure here. */ MyStack() { } /** Push element x onto stack. */ void push(int x...原创 2018-11-25 23:11:51 · 86 阅读 · 0 评论 -
[Leetcode] 232. Implement Queue using Stacks
class MyQueue {private : stack<int> sk1,sk2;public: /** Initialize your data structure here. */ MyQueue() { } /** Push element x to the back of queue. */ ...原创 2018-11-25 23:17:19 · 175 阅读 · 0 评论 -
[leetcode]
const int x=[]{ std::ios::sync_with_stdio(false); std::cin.tie(nullptr); return 0;}();class Solution { const int inf = 0x3f3f3f;public: int maxArea(vector<int>& height) { ...原创 2018-11-25 23:35:16 · 110 阅读 · 0 评论 -
[Leetcode]125. Valid Palindrome
注意输入是数字的情况class Solution {public: bool isPalindrome(string s) { int l = 0; int r = s.size()-1; while(l < r){ while(l < r && !((s[l] >= 'A'...原创 2018-11-26 11:14:11 · 92 阅读 · 0 评论 -
[Leetcode]95. Unique Binary Search Trees II
题目的意思是输出所有可能的二叉树 坑点:1.注意返回的数据类型,vector<TreeNode*>是一个头节点,所以每回插入都要new,否则会改变上一个插入的节点2.多练习树的递归算法,很有用3.使用类似于STL的迭代方式时要注意左闭右开的原则/** * Definition for a binary tree node. * struct TreeNode {...原创 2018-11-29 13:34:52 · 100 阅读 · 0 评论 -
[Leetcode]141. Linked List Cycle
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: bool hasCyc...原创 2018-11-29 13:43:30 · 87 阅读 · 0 评论 -
[Leetcode]167. Two Sum II - Input array is sorted
class Solution {public: vector<int> twoSum(vector<int>& numbers, int target) { vector<int> ans;//{numbers[i],numbers[mid]}; for(int i =...原创 2018-11-29 13:59:03 · 96 阅读 · 0 评论 -
[Leetcode]80. Remove Duplicates from Sorted Array II
基本题class Solution {public: int removeDuplicates(vector<int>& nums) { int j = -1; int count = 0; for(int i = 0;i < nums.size();i++){ if(i != 0 ...原创 2018-11-27 10:34:33 · 89 阅读 · 0 评论 -
[Leetcode]根据中序排列和前序排列重建二叉树
中序和后序重建二叉树/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {}...原创 2018-11-27 10:39:19 · 374 阅读 · 0 评论 -
[Leetcode]86. Partition List
这个题的关键在于读懂题意:就是把小于val的点移动到链表中大于等于val的第一个点的右边,同时不改变它们的相对顺序 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), ne...原创 2018-11-30 14:41:15 · 115 阅读 · 0 评论 -
[Leetcode]72. Edit Distance
编辑距离:两个字符串s,t,s变到t的最短距离,包含3个操作添加、删除以及修改令dp[i][j]表示s的前i个(含i)字符变到t的前j个字符的最短操作于是有两种情况1.s[i] == t[j]此时 dp[i][j] = min(min(dp[i-1][j-1], //表示不做修改 dp[i][j-1]+1), //表示前i个字符...原创 2018-12-01 15:17:48 · 101 阅读 · 0 评论 -
[Leetcode]231. Power of Two
关键函数lowbit:x&(-x) class Solution {public: bool isPowerOfTwo(int n) { long long t = n; if(t == 0) return false; return (t & (-t)) == t; }}; ...原创 2018-12-03 13:57:40 · 125 阅读 · 0 评论 -
[Leetcode]87. Scramble String
class Solution {public: bool isScramble(string s1, string s2) { if(s1.size() != s2.size()) return false; if(s1 == s2) return true; int check[26] = {0}; for(int i ...原创 2018-12-05 16:28:40 · 99 阅读 · 0 评论 -
[leetcode]207. Course Schedule
第一种图的方法:超时struct Edge{ int to; Edge(int x){ to = x; }};struct Node{ vector<Edge> edges; int indegree; Node(){ indegree=0; }};struct Graph{ ...原创 2018-12-03 15:27:30 · 123 阅读 · 0 评论 -
[Leetcode]115. Distinct Subsequences
第一个递归版本,会TLE,很简单,不用几行class Solution {public: int numDistinct(string s, string t) { if(s.size() < t.size() ) return 0; if(s == t) return 1; if(s[0] == t[0]){ ...原创 2018-12-05 18:04:00 · 108 阅读 · 0 评论 -
[Leetcode]208. Implement Trie (Prefix Tree)
基础题,生成一个Trie树 struct NODE{ int val; NODE * next[26]; NODE(){ val = 0; for(int i = 0;i < 26;++i){ next[i] = nullptr; } }};const int maxn = ...原创 2018-12-06 15:26:43 · 119 阅读 · 0 评论 -
[Leetcode]226. Invert Binary Tree
递归算法可解,就是逐层交换它们各自的子节点就行了。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), ...原创 2018-11-25 22:05:25 · 88 阅读 · 0 评论 -
[Leetcode]24. Swap Nodes in Pairs
这个题目中等难度,难点在于:1.奇数链表最后一个不会交换2.交换指针变量要用指针的指针才能真正交换正确的变量值/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), ne...原创 2018-11-24 15:38:32 · 77 阅读 · 0 评论 -
[leetcode]19. Remove Nth Node From End of List
这个题要注意的点:1.删除的是起始点2.删除的是最终的点/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class ...原创 2018-11-24 15:07:58 · 86 阅读 · 0 评论 -
9. Palindrome Number
bool isPalindrome(int x) { if(x<0 ) return false; if(x%10==0 && x!=0) return false; int sum=0; while(sum<x) { sum=sum*10+x%10; x/=10; } return sum==x || x=原创 2018-01-09 09:30:48 · 116 阅读 · 0 评论 -
[Leetcode] 92. Reverse Linked List II
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */const static int x=[]{ std::ios::syn...原创 2018-11-14 09:41:07 · 99 阅读 · 0 评论 -
[leetcode]142. Linked List Cycle II
第一种解法:hash表//hash表形式,最高只能到第二梯队/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */const ...原创 2018-11-11 11:24:56 · 120 阅读 · 0 评论 -
[Leetcode] 二叉树的最小差
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */con...原创 2018-11-11 21:31:13 · 149 阅读 · 0 评论 -
[Leetcode]56. Merge Intervals
Given a collection of intervals, merge all overlapping intervals.Example 1:Input: [[1,3],[2,6],[8,10],[15,18]]Output: [[1,6],[8,10],[15,18]]Explanation: Since intervals [1,3] and [2,6] overl...原创 2018-11-14 00:42:13 · 102 阅读 · 0 评论 -
[Leetcode]64. Minimum Path Sum
优先队列图搜索方法,超时,查看discussion发现是因为动态规划比这个快。。 = =可能因为优先队列是一棵红黑树要插入的缘故吧。下面是优先队列的方法。const int x=[]{ std::ios::sync_with_stdio(false); std::cin.tie(nullptr); return 0;}();//这里有个链表记录它的前驱节点...原创 2018-11-14 11:38:04 · 104 阅读 · 0 评论 -
[Leetcode]33. Search in Rotated Sorted Array
思路很简单,分类讨论:如果要查找的数小于数组第一个数,那就在旋转后的后半数组如果要查找的数大于数组第一个数,那就在前半数组找坑点: 1.注意空输入 2.注意看是否有可能有重复的数存在,这个题是没有重复的数的//剑指offer上面有const int x=[]{ std::ios::sync_with_stdio(false); std::cin.tie(...原创 2018-11-21 22:14:43 · 78 阅读 · 0 评论 -
[Leetcode]27. Remove Element
使用库函数upper,lower可以很方便的找到对应的位置删去就好了坑点:1.空数组2.删去的值有可能不在数组里面 const int x=[]{ std::ios::sync_with_stdio(false); std::cin.tie(nullptr); return 0;}();class Solution {public: int ...原创 2018-11-22 10:46:00 · 87 阅读 · 0 评论 -
[Leetcode]567. Permutation in String
最开始的思路是求全排列,然后find一下:class Solution { void swap(char &a, char &b){ char c=a; a=b; b=c; } bool Permutation(string &s){ if(s.size()==0 ) return...原创 2018-11-22 11:58:17 · 119 阅读 · 0 评论 -
[Leetcode]28. Implement strStr()
题目很简单,KMP算法搞定 class Solution {public: void prekmp(string s,int *next){ int j = -1; int n = s.size(); next[0] = -1; int i = 0; while(i < n-1){ ...原创 2018-11-24 01:45:29 · 78 阅读 · 0 评论 -
[Leetcode] 66. Plus One
这个题很简单,实现一个加法器,唯一有用的地方是第一位进位的话要插入一个1const int x = []{ std::ios::sync_with_stdio(false); std::cin.tie(nullptr); return 0;}();class Solution {public: vector<int> plusOne(vect...原创 2018-11-17 10:56:50 · 86 阅读 · 0 评论 -
[Leetcode] 98. Validate Binary Search Tree
第一个思路,不正确,因为没有考虑左右子树上的不一致问题/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL)...原创 2018-11-22 19:55:36 · 90 阅读 · 0 评论 -
[Leetcode] 69. Sqrt(x)
这个题的问题在于二分搜索后的结果的平方一定要小于目标值,所以特殊情况下要减一class Solution {public: int mySqrt(int x) { int l = 0; int r = x; long mid = l + ((r - l) >> 1); while(l <= r){...原创 2018-11-22 20:11:14 · 81 阅读 · 0 评论 -
[Leetcode]21. Merge Two Sorted Lists
合并两个排序好的列表,递归算法pass/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {pu...原创 2018-11-24 11:19:48 · 94 阅读 · 0 评论 -
[Leetcode]20. Valid Parentheses
简单题,一次过class Solution {public: bool isValid(string s) { stack<char> sk; for(auto c : s){ switch(c){ case '(': sk.push(c);...原创 2018-11-24 11:28:57 · 92 阅读 · 0 评论 -
[Leetcode] 3Sum Closest
const int inf = 0x3f3f3f;const int x = []{ std::ios::sync_with_stdio(false); std::cin.tie(nullptr); return 0;}();class Solution {public: int threeSumClosest(vector<int>&a...原创 2018-11-18 13:57:42 · 90 阅读 · 0 评论 -
[Leetcode]920. Number of Music Playlists
这个题目时动态规划里面比较hard的题目,解题思路:令数组dp[i][j]表示听i首歌中有j个不同的歌的方法数,所以最终的解为dp[L][N],dp[i][j]的状态转移方程分成两种情况讨论: 1.新加一首歌时新歌,对应的方法数为dp[i-1][j-1]*(N - (j-1));2.新加的一首歌是旧歌,同时j的大小打于K,对应的方法数为 dp[i-1][j]*(j-k)通过以上状态...原创 2018-12-14 17:40:11 · 209 阅读 · 1 评论