Skip to content

Commit 8249047

Browse files
committed
😄update my solutions
1 parent 3ff5b34 commit 8249047

File tree

4 files changed

+23
-8
lines changed

4 files changed

+23
-8
lines changed

solutions/002.add-two-numbers/add-two-numbers.c

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,3 @@
1-
/**
2-
* Definition for singly-linked list.
3-
* struct ListNode {
4-
* int val;
5-
* struct ListNode *next;
6-
* };
7-
*/
81
/**
92
* Definition for singly-linked list.
103
* struct ListNode {

solutions/002.add-two-numbers/db.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"c":"/**\n * Definition for singly-linked list.\n * struct ListNode {\n * int val;\n * struct ListNode *next;\n * };\n */\n/**\n * Definition for singly-linked list.\n * struct ListNode {\n * int val;\n * struct ListNode *next;\n * };\n */\nstruct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {\n\tstruct ListNode *result, *currentNode, *headNode;\n\theadNode = NULL;\n\tint flag = 0;\n while(l1 != NULL && l2 !=NULL) {\n \tcurrentNode = (struct ListNode *)malloc(sizeof(struct ListNode));\n \tcurrentNode->next = NULL;\n \tif(l1->val + l2->val + flag > 9) {\n \t\tcurrentNode->val = l1->val + l2->val + flag - 10;\n \t\tflag = 1;\n\t\t} else {\n\t\t\tcurrentNode->val = l1->val + l2->val + flag;\n\t\t\tflag = 0;\n\t\t}\n\t\tif (headNode == NULL) {\n\t\t\theadNode = currentNode;\n\t\t} else {\n\t\t\tresult->next = currentNode;\n\t\t}\n\t\tresult = currentNode;\n\t\tl1 = l1->next;\n\t\tl2 = l2->next;\n\t}\n\twhile(l1 != NULL) {\n\t\tcurrentNode = (struct ListNode *)malloc(sizeof(struct ListNode));\n\t\tcurrentNode->next = NULL;\n\t\tif(l1->val + flag > 9){\n\t\t\tcurrentNode->val = l1->val + flag - 10;\n\t\t\tflag = 1;\n\t\t} else {\n\t\t\tcurrentNode->val = l1->val + flag;\n\t\t\tflag = 0;\n\t\t}\n\t\tresult->next = currentNode;\n\t\tresult = currentNode;\n\t\tl1 = l1->next;\n\t}\n\twhile(l2 != NULL) {\n\t\tcurrentNode = (struct ListNode *)malloc(sizeof(struct ListNode));\n\t\tcurrentNode->next = NULL;\n\t\tif(l2->val + flag > 9){\n\t\t\tcurrentNode->val = l2->val + flag - 10;\n\t\t\tflag = 1;\n\t\t} else {\n\t\t\tcurrentNode->val = l2->val + flag;\n\t\t\tflag = 0;\n\t\t}\n\t\tresult->next = currentNode;\n\t\tresult = currentNode;\n\t\tl2 = l2->next;\n\t}\n\tif(flag != 0) {\n\t\tcurrentNode = (struct ListNode *)malloc(sizeof(struct ListNode));\n\t\tcurrentNode->next = NULL;\n\t\tcurrentNode->val = flag;\n\t\tresult->next = currentNode;\n\t}\n\treturn headNode;\n}"}
1+
{"c":"/**\n * Definition for singly-linked list.\n * struct ListNode {\n * int val;\n * struct ListNode *next;\n * };\n */\nstruct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {\n\tstruct ListNode *result, *currentNode, *headNode;\n\theadNode = NULL;\n\tint flag = 0;\n while(l1 != NULL && l2 !=NULL) {\n \tcurrentNode = (struct ListNode *)malloc(sizeof(struct ListNode));\n \tcurrentNode->next = NULL;\n \tif(l1->val + l2->val + flag > 9) {\n \t\tcurrentNode->val = l1->val + l2->val + flag - 10;\n \t\tflag = 1;\n\t\t} else {\n\t\t\tcurrentNode->val = l1->val + l2->val + flag;\n\t\t\tflag = 0;\n\t\t}\n\t\tif (headNode == NULL) {\n\t\t\theadNode = currentNode;\n\t\t} else {\n\t\t\tresult->next = currentNode;\n\t\t}\n\t\tresult = currentNode;\n\t\tl1 = l1->next;\n\t\tl2 = l2->next;\n\t}\n\twhile(l1 != NULL) {\n\t\tcurrentNode = (struct ListNode *)malloc(sizeof(struct ListNode));\n\t\tcurrentNode->next = NULL;\n\t\tif(l1->val + flag > 9){\n\t\t\tcurrentNode->val = l1->val + flag - 10;\n\t\t\tflag = 1;\n\t\t} else {\n\t\t\tcurrentNode->val = l1->val + flag;\n\t\t\tflag = 0;\n\t\t}\n\t\tresult->next = currentNode;\n\t\tresult = currentNode;\n\t\tl1 = l1->next;\n\t}\n\twhile(l2 != NULL) {\n\t\tcurrentNode = (struct ListNode *)malloc(sizeof(struct ListNode));\n\t\tcurrentNode->next = NULL;\n\t\tif(l2->val + flag > 9){\n\t\t\tcurrentNode->val = l2->val + flag - 10;\n\t\t\tflag = 1;\n\t\t} else {\n\t\t\tcurrentNode->val = l2->val + flag;\n\t\t\tflag = 0;\n\t\t}\n\t\tresult->next = currentNode;\n\t\tresult = currentNode;\n\t\tl2 = l2->next;\n\t}\n\tif(flag != 0) {\n\t\tcurrentNode = (struct ListNode *)malloc(sizeof(struct ListNode));\n\t\tcurrentNode->next = NULL;\n\t\tcurrentNode->val = flag;\n\t\tresult->next = currentNode;\n\t}\n\treturn headNode;\n}"}

solutions/002.add-two-numbers/post.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# 002.add-two-numbers
2+
这道题是两链表分别代表两个正整数,让两个链表相加的算法。
3+
4+
首先需要考虑进位,因此设定一个`flag`变量,一旦有进位,则把`flag`设为1。
5+
6+
还应该考虑其中一个链表很长,一个链表很短,两链表长度不一致的情况,如`1 + 1000`这种`case`,需要在其中一个链表遍历到尾端之后还要看另一个链表是否到尾,如果没到尾,还需要把另一个链表剩下部分加上去。
7+
8+
最后,如果都遍历到尾了,还要看最后的符号位是否为`1`。例如`1 + 999`这种`case`。如果为`1`,还要在末尾新加一个`val``1`的节点。
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# 003.longest-substring-without-repeating-characters
2+
这道题是晚上利用业余时间在公司做的,因为没有`C/C++`的环境,所以简单易行使用了`JavaScript`
3+
4+
首先看题意,题意是叫我们找到最长非重复子串,其实个人觉得这个题意有点难懂哈,看例子:`abcabcbb`这个字符串,找到一个`string`,里面的任何一个`char`都不重复,显然是`abc`,这样好理解一些。
5+
6+
其实我首先就想到这道题要用`Hash Map`,但是自己搞了很久没搞出来,后面参考了一些网上的答案。
7+
8+
我们设定一个左指针和右指针,最开始左右指针都指向`string[0]`然后从左到右进行遍历。遍历到的字符分两种情况,一是未命中哈希表,则把它的位置存到哈希表中。如果命中了哈希表,证明有重复的了,则此时右指针到左指针的距离存到临时变量`result`中。最后看`result`的最大值。
9+
10+
其次,命中哈希表时我们需要更新指针和哈希表,在**当前左指针****命中的哈希表的位置右边一位**找到一个较大值,什么意思呢?有可能**命中的哈希表的位置右边一位**是比**当前左指针**还要小的,这样可能造成无限循环!!
11+
12+
具体过程可以看下面的图:
13+
14+
![](https://hk029.gitbooks.io/leetbook/content/%E5%AD%97%E7%AC%A6%E4%B8%B2/003.%20Longest%20Substring%20Without%20Repeating%20Characters[M]/1459857033836.png)![](https://hk029.gitbooks.io/leetbook/content/%E5%AD%97%E7%AC%A6%E4%B8%B2/003.%20Longest%20Substring%20Without%20Repeating%20Characters[M]/1459857050765.png)![](https://hk029.gitbooks.io/leetbook/content/%E5%AD%97%E7%AC%A6%E4%B8%B2/003.%20Longest%20Substring%20Without%20Repeating%20Characters[M]/1459857109997.png)![](https://hk029.gitbooks.io/leetbook/content/%E5%AD%97%E7%AC%A6%E4%B8%B2/003.%20Longest%20Substring%20Without%20Repeating%20Characters[M]/1459857137766.png)![](https://hk029.gitbooks.io/leetbook/content/%E5%AD%97%E7%AC%A6%E4%B8%B2/003.%20Longest%20Substring%20Without%20Repeating%20Characters[M]/1459857157171.png)

0 commit comments

Comments
 (0)