- 博客(15)
- 收藏
- 关注
原创 leetcode 64 Next Greater Element I C++
遍历第二个数组,用一个栈来构建一个数字和next greater一一对应的map即可。 vector nextGreaterElement(vector& findNums, vector& nums) { stack st; unordered_map mp; vector vec; for (int i : nums)
2017-04-16 00:11:44 372
原创 leetcode 55 Jump Game C++
这道题从前往后便利,记录能到达的最大Index,如果发现当前index大于最大index,则不可达。然后判断是否大于了最大index即可。 bool canJump(vector& nums) { int len = nums.size(); int maxIndex = 0; if (maxIndex >= len - 1) retu
2017-04-14 11:22:58 569
原创 leetcode 64 Minimum Path Sum C++
动态规划状态转移方程 dp[i][j] += min(dp[i-1][j],dp[i][j-1])一次AC,代码如下: int minPathSum(vector>& grid) { int row = grid.size(); int col = grid[0].size(); for (int i = 1;i<row;i++)
2017-04-14 10:49:39 562
原创 leetcode 82 Remove Duplicates from Sorted List II C++
这道题题意很简单,但是容易出错,特别是第一个Node需要删掉的情况,所以可以使用一个dumyNode来做,简单而且不容易出错。 ListNode* deleteDuplicates(ListNode* head) { if (!head || !head->next) return head; ListNode *dummy = new ListNode(
2017-04-13 15:00:39 539 1
原创 leetcode 208 Implement Trie C++
这个就是字典树了,我用unordered_map时间上更节省一些。class TrieNode { public: unordered_map children; bool isLeaf; TrieNode(){isLeaf = false;};};class Trie {public: TrieNode *root; /** Initia
2017-04-13 00:30:57 666
原创 leetcode 230 Kth Smallest Element in a BST C++
先用简单的方法,中序遍历放到一个数组里面,取k-1即可。 vector vec; void inorder(TreeNode *root) { if (!root) return; inorder(root->left); vec.push_back(root->val); inorder(root->right);
2017-04-13 00:14:12 603
原创 leetcode 538 Convert BST to Greater Tree C++
用反过来的中序遍历即可 int sum = 0; void rever(TreeNode *root) { if (!root) return; rever(root->right); root->val += sum; sum = root->val; rever(root->left);
2017-04-12 23:54:00 525
原创 leetcode 515 Find Largest Value in Each Tree Row C++
层次遍历,太简单了,一次过。 vector largestValues(TreeNode* root) { queue que; vector vec; if (!root) return vec; que.push(root); while(!que.empty()) { int s
2017-04-12 23:41:25 464
原创 leetcode 513 Find Bottom Left Tree Value C++
一次AC,用的层次遍历,遍历一层的时候记录第一个node int findBottomLeftValue(TreeNode* root) { queueque; que.push(root); TreeNode *leftNode = NULL; int horizinal = 1; int tmpHoriz
2017-04-10 00:27:05 482
原创 leetcode 557 Reverse Words in a String III C++
把word分割出来分别旋转即可。 void reverseString(string &s,int left, int right) { while (left < right) { char tmp = s[left]; s[left] = s[right]; s[right] = tmp;
2017-04-10 00:04:34 490
原创 字典树Demo C++
字典树是一种处理字符串很重要的树,我写了一个Demo,不会写的同学可以参考看看。头文件自己加吧 :)class TreeNode {public: int val; unordered_map children;};class Tree {public: TreeNode *root; Tree() { root = new Tre
2017-04-09 14:48:42 462
原创 leetcode 508 Most Frequent Subtree Sum C++
这道题我用后序遍历把所有子树和都放在一个map里面保存,然后找到最大的次数并输出即可。 map m; int houxu(TreeNode *root) { if (!root) return 0; int sum = root -> val; sum += houxu(root->left); sum += hou
2017-04-08 23:44:00 294
原创 leetcode 328 Odd Even Linked List C++
这道题把奇数的拿出来,再把偶数的拿出来,连接上即可。 ListNode* oddEvenList(ListNode* head) { if (!head) return head; ListNode *odd = head; ListNode *even = head -> next; ListNode *
2017-04-07 18:38:44 611
原创 leetcode 495 Teemo Attacking C++
这题就是两次攻击间隔小于duration的话就加间隔,否则加duration。注意最后一次和没有的情况即可。 int findPoisonedDuration(vector& timeSeries, int duration) { if (timeSeries.empty()) return 0; int sum = 0; for (i
2017-04-07 16:50:27 429
原创 leetcode 485 Max Consecutive Ones C++
这个太简单,不说了int findMaxConsecutiveOnes(vector& nums) { int subNum = 0; int max = 0; for (int i = 0;i<nums.size();i++) { if (nums[i] & 0x01) subNum++; els
2017-04-07 16:39:28 557
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人