原创 LeetCode之Fraction to Recurring Decimal

/*思路: 1.計算整數部分;這裏主要注意,分子絕對值小於分母絕對值且分子分母異號時,要返回“-0”。 2.計算小數部分;思路:用一個hash表記住出現過的餘數以及餘數對應的位置,如果當前用於計算 小數的餘數在hash表中存在,則應返

原创 LeetCode之Rectangle Area

/*根據題意,兩種情況: 1)兩個矩形不相交,直接返回兩個矩形的面積之和; 2)兩個矩形相交,返回兩個矩形面積之和與交集的面積差。*/ class Solution { public: int computeArea(int A,

原创 LeetCode之 Delete Node in a Linked List

/*由於不知道前驅結點,因此無法刪除當前結點的。爲了完成題目中的要求, 唯有一個辦法:用後面結點的值將當前結點的值覆蓋掉。*/ class Solution { public: void deleteNode(ListNode

原创 LeetCode之Intersection of Two Linked Lists

/*思路: 1.找到兩個鏈表的長度; 2.根據這兩個鏈表的長度差,使較長的那個鏈表向前走相應長度。 3.同時掃描兩個鏈表,尋找它們的交叉節點。*/ class Solution { public: ListNode *ge

原创 LeetCode之Count Primes

/*根據提示求解。*/ class Solution { public: int countPrimes(int n) { bool mark[n]; memset(mark, 1, sizeof(

原创 LeetCode之Ugly Number

/*判斷一個數是否爲Ugly Number。 如果該數本身爲1,2,3,5,那麼它即爲Ugly Number。 否則,判斷這個數是否能被2,3,5整除。如果能,則除以2,3,5, 然後判斷它除過之後的數,否則它不爲Ugly Number。

原创 LeetCode之Shortest Palindrome

/*爲了獲取最短的迴文串,需要找到字符串從頭開始的最長迴文子串,然後取剩下部分 的字符串的逆序加到字符串的前頭,即可獲得最短迴文子串。所以解決該問題的關鍵部分是 尋找以第一個字符開始的最長迴文子串,有以下幾種方法: 1.採用暴力查找,大數

原创 LeetCode之Repeated DNA Sequences

/*本題最直觀的想法是用Hash Table存儲起連續的10個字符串,但是這樣會超出內存限制。 所以用一個數字代替A/C/GT,減少內存消耗。*/ class Solution { public: vector<string> find

原创 LeetCode之Palindrome Linked List

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(i

原创 LeetCode之Happy Number

/*用一個Hash表記錄出現過得數字。採用如下步驟獲得結果: 從當前正數n開始,1)如果n == 1,則它爲happy number,返回true,結束。 2)如果n != 1, 且hash表中有等於n的數字,會陷入循環,返回false,

原创 LeetCode之Reverse Linked List

/*鏈表的頭插法。*/ class Solution { public: ListNode* reverseList(ListNode* head) { if(head == nullptr || head->n

原创 LeetCode之Remove Linked List Elements

class Solution { public: ListNode* removeElements(ListNode* head, int val) { if(head == nullptr) return hea

原创 LeetCode之Power of Two

/*方法一:用2除。*/ class Solution { public: bool isPowerOfTwo(int n) { if(n < 1) return false; while(n !=

原创 LeetCode之Isomorphic Strings

/*從s->t映射可以,用hash記住每個映射,判斷是否能從s->t進行映射。 反過來,再判斷是否能從t->進行映射,只有能進s->t和t->的映射,纔是同構的。*/ class Solution { public: bool i

原创 LeetCode之Longest Palindromic Substring

/*用dp[i][j]表示子串s[i...j]是否爲迴文,則有 dp[i][j] = d[i+1][j-1] && s[i] == s[j](i+1 < j); dp[i][j] = (s[i] == s[j])(i+1 == j)並且,