[LeetCode] Decode Ways int numDecodings(string s) { if (s.length() == 0 || s[0] == '0') { return 0; } else if (s.length() == 1) { return 1; } int numWithoutLastTwo = 1, numWithoutLastOne = 1, num = 0; for (int
[LeetCode] ZigZag Conversion string convert(string s, int nRows) { if (nRows <= 1) { return s; } string* rowStr = new string[nRows]; bool down = true; int i = 0, row = 0; while (i < s.length()) { if (down) { row
C++中 string转int 和 int转string #include using namespace std;stringstream strStream;string str = "-123";stream<<str;int val;stream>>val;
[LeetCode] Count and Say string countAndSay(string s) { string result; int index1 = 0, index2 = 0, count = 0; while(index1 < s.length()) { if (s[index2] == s[index1]) { count++; index2++; } if (index2 =
[LeetCode] Anagrams vector anagrams(vector &strs) { map hashTable; for (int i = 0; i < strs.size(); i++) { string str = strs[i]; sort(str.begin(), str.end()); if (hashTable.count(str) == 0) { hashTable[str]
[LeetCode] 3Sum vector > threeSum(vector &num) { sort(num.begin(), num.end()); vector> triplets; int n = num.size(); if (n == 0) { return triplets; } int lastNum = num[0] + 1; for (int aIndex = 0; aIndex <
[LeetCode] Insert Interval vector insert(vector &intervals, Interval newInterval) { int beg = intervals.size(), end = intervals.size()-1; bool getBeg = false; for (int i = 0; i < intervals.size(); i++) { if (newInterval.s
[LeetCode] Longest Common Prefix string longestCommonPrefix(vector &strs) { string commonPrefix; if(strs.empty()) { return commonPrefix; } int index = 0; while(1) { for(int i = 0; i < strs.size(); i++) { string str = strs
[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
[LeetCode] Two Sum vector twoSum(vector &numbers, int target) { vector twoIndex; map numIndex; for(int i = 0; i < numbers.size(); i++) { int num = target - numbers[i]; if(!numIndex.count(num)) { numIndex[numbe
[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
[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
[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
[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
[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 == '-')
[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')
[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
[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
[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; }