
LeetCode
HQBUPT
这个作者很懒,什么都没留下…
展开
-
[LeetCode] N-Queens
vector > solveNQueens(int n) { vector solution; int* place_queen = new int[n]; for(int i = 0; i < n; i++) { //bool have_place = false; bool place_able = tru原创 2014-07-08 11:55:24 · 392 阅读 · 0 评论 -
[LeetCode] Minimum Depth of Binary Tree
int minDepth(TreeNode *root) { vector nodes; vector depths; int min_depth = 0; if(root != NULL) { nodes.push_back(root); depths.push_back(1); } while(!nodes.empty()) { TreeNode* cur_node原创 2014-07-09 14:03:23 · 495 阅读 · 0 评论 -
[LeetCode] Reorder List
void reorderList(ListNode *head) { int node_sum = 0; ListNode* cur_node = head; while(cur_node != NULL) { node_sum++; cur_node = cur_node->next; } ListNode* list1 = head; int cnt = 1;原创 2014-07-09 17:49:14 · 491 阅读 · 0 评论 -
[LeetCode] Insertion Sort List
ListNode *insertionSortList(ListNode *head) { if(head == NULL) { return head; } ListNode * sorted_list = new ListNode(0); sorted_list->next = head; ListNode* unsorted_list = head->next; head-原创 2014-07-09 16:05:54 · 397 阅读 · 0 评论 -
[LeetCode] Sum Root to Leaf Numbers
题目链接int sumNumbers(TreeNode *root) { vector nodes; vector numbers; int sum_numbers = 0; if(root != NULL) { nodes.push_back(root); numbers.push_back(root->val); } while(!no原创 2014-07-09 13:31:43 · 466 阅读 · 0 评论 -
[LeetCode] Flatten Binary Tree to Linked List
题目链接void flatten(TreeNode *root) { vector nodes; nodes.push_back(root); while(!nodes.empty()) { TreeNode* cur_node = nodes.back(); TreeNode* left_child = NULL; TreeNode* right_child = NULL原创 2014-07-09 13:01:54 · 359 阅读 · 0 评论 -
[LeetCode] Jump Game II
int jump(int A[], int n) { int* steps = new int[n]; steps[n-1] = 0; for (int i = n-2; i >= 0; i--) { steps[i] = n; int furthest_index = (i + A[i]) < (n-1)? (i + A[i]) : (n-1); steps[i] = ste原创 2014-07-10 19:42:18 · 435 阅读 · 0 评论 -
[LeetCode] Path Sum II
vector > pathSum(TreeNode *root, int sum) { vector> path_sum; vector nodes; vector> paths; vector sums; if(root != NULL) { nodes.push_back(root); sums.push_back(root->val); vector path;原创 2014-07-09 14:53:57 · 561 阅读 · 0 评论 -
[LeetCode] Jump Game
bool canJump(int A[], int n) { int lastIndex = n - 1; int index = n - 1; while (index >= 0) { if (A[index] >= (lastIndex - index)) { lastIndex = index; } index--; } if (lastIndex == 0原创 2014-07-03 22:07:55 · 470 阅读 · 0 评论 -
[LeetCode] Valid Parentheses
bool isValid(string s) { int cnt0 = 0, cnt1 = 0, cnt2 = 0; vector expect_type; int index = 0; while (index < s.length()) { switch (s[index]) { case '(': cnt0++; expect_type.push_back(原创 2014-07-06 13:12:09 · 432 阅读 · 0 评论 -
[LeetCode] N-Queens II
int totalNQueens(int n) { int total = 0; if (n == 0) { return total; } int* place_queen = new int[n]; for (int i = 0; i < n; i++) { place_queen[i] = -1; } int index = 0; while (index原创 2014-07-08 19:24:15 · 441 阅读 · 0 评论 -
[LeetCode] Populating Next Right Pointers in Each Node
void connect(TreeLinkNode *root) { TreeLinkNode* level_head = root; while(level_head != NULL) { TreeLinkNode* next_level_head = NULL; if(level_head->left != NULL) { next_level_head = level原创 2014-07-08 10:06:03 · 473 阅读 · 0 评论 -
[LeetCode] Search in Rotated Sorted Array
题目链接int search(int A[], int n, int target) { int beg = 0, end = n-1; while(beg <= end) { int mid = (beg+end)/2; if(A[beg] <= A[end]) { if(target < A[mid]) { end = mid - 1; }原创 2014-07-09 11:17:36 · 338 阅读 · 0 评论 -
[LeetCode] Binary Tree Postorder Traversal
vector postorderTraversal(TreeNode *root) {vector pre_node;vector val;pre_node.push_back(root);while(!pre_node.empty()){TreeNode* cur_node = pre_node.back();TreeNode* left_leaf = NUL原创 2014-07-07 19:56:05 · 476 阅读 · 0 评论 -
[LeetCode] Symmetric Tree
bool isSymmetric(TreeNode *root) { vector left_nodes; vector right_nodes; if (root != NULL) { if(root->left != NULL) { left_nodes.push_back(root->left); } if(root->right != NULL) {原创 2014-07-08 10:58:36 · 499 阅读 · 0 评论 -
[LeetCode] Populating Next Right Pointers in Each Node II
题目链接void connect2(TreeLinkNode *root) { TreeLinkNode* level_head = root; while(level_head != NULL) { TreeLinkNode* next_level_head = NULL; bool get_next_head = false; TreeLinkNode* cur_node原创 2014-07-09 10:23:06 · 395 阅读 · 0 评论 -
[LeetCode] Binary Tree Inorder Traversal
vector inorderTraversal(TreeNode *root) { vector pre_node; vector val; if (root == NULL) { return val; } pre_node.push_back(root); while(!pre_node.empty()) { TreeNode* cur_node = pre_node原创 2014-07-07 19:27:14 · 444 阅读 · 0 评论 -
[LeetCode] Binary Tree Zigzag Level Order Traversal
vector > zigzagLevelOrder(TreeNode *root) { vector last_level_node; vector> val_in_level; if (root == NULL) { return val_in_level; } last_level_node.push_back(root); vector cur_level_node;原创 2014-07-07 22:19:22 · 449 阅读 · 0 评论 -
[LeetCode] Binary Tree Level Order Traversal
vector > levelOrder(TreeNode *root) { vector last_level_node; vector> val_in_level; last_level_node.push_back(root); while(!last_level_node.empty()) { vector v原创 2014-07-07 20:28:33 · 528 阅读 · 0 评论 -
[LeetCode] Binary Tree Level Order Traversal II
vector > levelOrderBottom(TreeNode *root) { vector last_level_node; vector> val_in_level; if (root == NULL) { return val_in_level; } last_level_node.push_back(root); vector cur_level_node;原创 2014-07-07 22:00:32 · 573 阅读 · 0 评论 -
[LeetCode] Balanced Binary Tree
int height(TreeNode *root) { if(root == NULL) { return 0; } int left_height = height(root->left); int right_height = height(root->right); return left_height > right_height? (left_height+1) :(ri原创 2014-07-11 14:51:26 · 473 阅读 · 0 评论 -
[LeetCode] Copy List with Random Pointer
RandomListNode *copyRandomList(RandomListNode *head) { if(head == NULL) { return NULL; } RandomListNode* curNode = head; while(curNode != NULL) { RandomListNode* curCopyNode = new RandomLi原创 2014-07-11 10:29:38 · 553 阅读 · 0 评论 -
[LeetCode] Valid Palindrome
bool isPalindrome(string s) { int left = 0, right = s.length()-1; while (left <= right) { char leftChar = s[left]; if (!((leftChar >= '0' && leftChar = 'a' && leftChar = 'A' && leftChar <= 'Z')原创 2014-07-13 16:51:54 · 469 阅读 · 0 评论 -
[LeetCode] Partition List
ListNode *partition(ListNode *head, int x) { ListNode* virtualHead = new ListNode(-1); virtualHead->next = head; ListNode* lessNode = virtualHead; ListNode* preNode = virtualHead; ListNode* curNo原创 2014-07-13 16:03:50 · 458 阅读 · 0 评论 -
[LeetCode] Pow(x, n)
double pow(double x, int n) { if (n == INT_MIN) { return 1.0/(pow(x, -(n+1))*x); } else if(n < 0) { return 1.0/pow(x, -n); } else if(n == 0) { return 1.0; } else if (n == 1) { retur原创 2014-07-15 10:43:56 · 467 阅读 · 0 评论 -
[LeetCode] Candy
int candy(vector &ratings) { int n = ratings.size(); int* candy = new int[n]; for(int i = 0; i < n; i++) { candy[i] = 1; } for(int i = 1; i < n; i++) { if(ratings[i] > ratings[i-1] && candy[i原创 2014-07-14 15:51:23 · 554 阅读 · 0 评论 -
[LeetCode] Palindrome Number
bool isPalindrome(int x) { if (x < 0) { return false; } int xReverse = 0; int xTmp = x; while (xTmp != 0) { if (xReverse > INT_MAX/10) { return false; } xReverse *= 10; if ((IN原创 2014-07-13 22:54:12 · 495 阅读 · 0 评论 -
[LeetCode] String to Integer (atoi)
int atoi(const char *str) { if (str == NULL) { return 0; } while (*str == ' ') { str++; } bool negative = false; if (*str == '+') { negative = false; str++; } else if (*str == '-')原创 2014-07-13 22:07:09 · 622 阅读 · 0 评论 -
[LeetCode] Implement strStr()
char *strStr(char *haystack, char *needle) { if (haystack == NULL || needle == NULL){ return NULL; } int haystack_len = strlen(haystack); int needle_len = strlen(needle); for(int i = 0; i <= ha原创 2014-07-14 18:50:32 · 609 阅读 · 0 评论 -
[LeetCode] Longest Consecutive Sequence
int longestConsecutive(vector &num) { map map; for (int i = 0; i < num.size(); i++) { map[num[i]] = true; } int maxLen = 0; for (int i = 0; i < num.size(); i++) { if (map[num[i]] == tru原创 2014-07-14 21:45:35 · 506 阅读 · 0 评论 -
[LeetCode] Validate Binary Search Tree
vector inorderTraversal(TreeNode *root) { vector pre_node; vector val; if (root == NULL) { return val; } pre_node.push_back(root); while(!pre_node.empty()) { TreeNode* cur_node = pre_node原创 2014-07-13 16:28:06 · 553 阅读 · 0 评论 -
[LeetCode] Convert Sorted List to Binary Search Tree
TreeNode *sortedListToBST(ListNode *head) { if(head == NULL) { return NULL; } ListNode* virtual_head = new ListNode(-1); virtual_head->next = head; ListNode *pLast = virtual_head, *pSlow = head原创 2014-07-11 16:58:28 · 1223 阅读 · 0 评论 -
[LeetCode] Subsets
vector> combine(vector &nums, int k) { vector> combinations; if (k == 0) { vector combination; combinations.push_back(combination); return combinations; } if (k == nums.size()) { combina原创 2014-07-13 11:26:02 · 537 阅读 · 0 评论 -
[LeetCode] Gas Station
int canCompleteCircuit(vector &gas, vector &cost) { vector gasLeft; for(int i = 0; i < gas.size(); i++) { gasLeft.push_back(gas[i] - cost[i]); } int startStation = 0, gasBalance = 0, gasCost = 0原创 2014-07-11 11:15:16 · 484 阅读 · 0 评论 -
[LeetCode] Letter Combinations of a Phone Number
vector letterCombinations(string digits) { string letters[26] = {"abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"}; vector letterCombos; if (digits.length() == 0) { string letterCombo; letter原创 2014-07-12 20:50:13 · 599 阅读 · 0 评论 -
[LeetCode] Permutations II
vector > permuteUnique(vector &num) { vector> permutations; if (num.size() <= 1) { permutations.push_back(num); return permutations; } sort(num.begin(), num.end()); int lastNum = num.back()原创 2014-07-12 22:33:54 · 495 阅读 · 0 评论 -
[LeetCode] Combinations
vector> combine(vector &nums, int k) { vector> combinations; if (k == 0) { vector combination; combinations.push_back(combination); return combinations; } if (k == nums.size()) { combina原创 2014-07-13 10:58:22 · 694 阅读 · 0 评论 -
[LeetCode] Search in Rotated Sorted Array II
bool search(int A[], int n, int target) { int beg = 0, end = n-1; while (beg <= end) { int mid = (beg+end)/2; if (A[beg] < A[end]) { if (target < A[mid]) { end = mid - 1; }原创 2014-07-13 14:05:03 · 444 阅读 · 0 评论 -
[LeetCode] First Missing Positive
int firstMissingPositive(int A[], int n) { for(int i = 0; i < n; ) { if(A[i] n || A[A[i]-1] == A[i]) i++; else swap(A[i], A[A[i]-1]); } for(int i = 0; i < n; ) { if(A[i] == i+1) i++原创 2014-07-11 09:35:40 · 424 阅读 · 0 评论 -
[LeetCode] Convert Sorted Array to Binary Search Tree
TreeNode *sortedArrayToBST(vector &num) { int n = num.size(); int beg = 0, end = n-1; TreeNode* root = NULL; if(beg <= end) { int mid = (beg + end + 1)/2; root = new TreeNode(num[mid]); vect原创 2014-07-11 15:59:59 · 675 阅读 · 0 评论