Skip to content

Commit 6ed6baa

Browse files
committed
update 369 java
1 parent a4c09aa commit 6ed6baa

File tree

4 files changed

+119
-26
lines changed

4 files changed

+119
-26
lines changed

data/progress.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
20250104: 1031
1+
20250104: 1031,369
22
20250101: 729,731
33
20241231: 769,817,855(again)
44
20241229: 498(again),934

data/to_review.txt

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
2025-02-28 -> ['1031']
1+
2025-02-28 -> ['1031,369']
22
2025-02-25 -> ['729,731']
33
2025-02-24 -> ['769,817,855(again)']
44
2025-02-22 -> ['498(again),934']
@@ -7,34 +7,34 @@
77
2025-02-15 -> ['369,311']
88
2025-02-14 -> ['370']
99
2025-02-13 -> ['815,871,593,1109']
10-
2025-02-07 -> ['1031', '560,523']
10+
2025-02-07 -> ['1031,369', '560,523']
1111
2025-02-04 -> ['729,731']
1212
2025-02-03 -> ['769,817,855(again)']
1313
2025-02-01 -> ['498(again),934', '304,853,325']
1414
2025-01-31 -> ['379,173']
1515
2025-01-30 -> ['079,212(todo),362,849']
1616
2025-01-26 -> ['370(todo)']
17-
2025-01-25 -> ['1031', '369,311']
17+
2025-01-25 -> ['1031,369', '369,311']
1818
2025-01-24 -> ['370', '34,767']
1919
2025-01-23 -> ['815,871,593,1109']
2020
2025-01-22 -> ['729,731']
2121
2025-01-21 -> ['769,817,855(again)']
2222
2025-01-20 -> ['722,380']
2323
2025-01-19 -> ['498(again),934', '33,81']
2424
2025-01-18 -> ['379,173']
25-
2025-01-17 -> ['1031', '079,212(todo),362,849', '560,523', '253']
25+
2025-01-17 -> ['1031,369', '079,212(todo),362,849', '560,523', '253']
2626
2025-01-16 -> ['776,31']
2727
2025-01-15 -> ['004(todo),34(todo),162(todo),275(todo)']
2828
2025-01-14 -> ['729,731', '986(todo),1229(todo),1868(todo),80(todo),209(todo),283(todo),360(todo),713(todo),532(todo),611(todo)']
2929
2025-01-13 -> ['769,817,855(again)']
30-
2025-01-12 -> ['1031', '369,311']
30+
2025-01-12 -> ['1031,369', '369,311']
3131
2025-01-11 -> ['498(again),934', '370', '304,853,325', '394']
3232
2025-01-10 -> ['379,173', '815,871,593,1109', '833,950']
33-
2025-01-09 -> ['1031', '729,731', '079,212(todo),362,849']
33+
2025-01-09 -> ['1031,369', '729,731', '079,212(todo),362,849']
3434
2025-01-08 -> ['769,817,855(again)']
35-
2025-01-07 -> ['1031']
36-
2025-01-06 -> ['1031', '729,731', '498(again),934']
37-
2025-01-05 -> ['1031', '769,817,855(again)', '379,173', '370(todo)']
35+
2025-01-07 -> ['1031,369']
36+
2025-01-06 -> ['1031,369', '729,731', '498(again),934']
37+
2025-01-05 -> ['1031,369', '769,817,855(again)', '379,173', '370(todo)']
3838
2025-01-04 -> ['729,731', '079,212(todo),362,849', '369,311', '560,523', '53,210,207']
3939
2025-01-03 -> ['729,731', '769,817,855(again)', '498(again),934', '370', '34,767', '444']
4040
2025-01-02 -> ['729,731', '769,817,855(again)', '379,173', '815,871,593,1109', '1188,130,855(again)']

leetcode_java/src/main/java/LeetCodeJava/LinkedList/PlusOneLinkedList.java

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,50 @@ public class PlusOneLinkedList {
3131
*/
3232

3333
// V0
34-
// TODO : implement
35-
// public ListNode plusOne(ListNode head) {
36-
// }
34+
// TODO : validate
35+
public ListNode plusOne(ListNode head) {
3736

37+
// edge case
38+
if (head == null){
39+
return new ListNode(1);
40+
}
41+
42+
ListNode reversedHead = reverseNode(head);
43+
int extra = 0;
44+
45+
while(reversedHead != null){
46+
int val = reversedHead.val;
47+
val += (1 + extra);
48+
// if val <= 9, no need to handle "carry", end the while loop
49+
if (val <= 9){
50+
break;
51+
}
52+
extra = val - 10;
53+
54+
reversedHead = reversedHead.next;
55+
}
56+
57+
// if extra != 0, need to carry to next digit
58+
if(extra > 0){
59+
reversedHead.next = new ListNode(extra);
60+
}
61+
62+
ListNode res = reverseNode(reversedHead);
63+
return res;
64+
}
65+
66+
private ListNode reverseNode(ListNode node){
67+
ListNode _prev = null;
68+
ListNode cur = node;
69+
70+
while(cur != null){
71+
ListNode _next = cur.next;
72+
cur.next = _prev;
73+
_prev = cur;
74+
cur = _next; // NOTE this !!!
75+
}
76+
return _prev; // NOTE this !!!
77+
}
3878

3979
// V1
4080
// IDEA : LINKED LIST OP (gpt)

leetcode_java/src/main/java/dev/workspace6.java

Lines changed: 66 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -486,35 +486,88 @@ public int[] getModifiedArray(int length, int[][] updates) {
486486

487487
// LC 369
488488
// https://leetcode.ca/all/369.html
489-
// 3.42 PM - 4.00 pm
489+
// 5.35 - 5.50 pm
490490
/**
491491
* IDEA 1 : linked list -> int, +1, transform back to linked list
492492
*
493493
* Idea 2: do in linked list directly
494494
* -> reverse
495495
* -> add 1, if > 9, move to next digit
496496
* -> reverse again
497+
*/
498+
/**
499+
* IDEA 3:
497500
*
501+
* step 1) reverse
502+
* step 2) `add 1` op
503+
* step 3) reverse
504+
498505
*/
499-
// v2
506+
// V3
500507
public ListNode plusOne(ListNode head) {
508+
// edge case
501509
if (head == null){
502-
return new ListNode(1); // ??
510+
return new ListNode(1);
503511
}
504-
ListNode tmp = new ListNode();
505-
// // reverse
506-
// while(head != null){
507-
// ListNode _next = head.next;
508-
// ListNode _prev = tmp; // ??
509-
// head.next = _prev;
510-
// head = _next;
511-
// }
512-
// tmp.val += 1; // ??
513512

513+
ListNode reversedHead = reverseNode(head);
514514

515-
return null;
515+
int extra = 0;
516+
517+
while(reversedHead != null){
518+
int val = reversedHead.val;
519+
val += (1 + extra);
520+
// if val <= 9, no need to handle "carry", end the while loop
521+
if (val <= 9){
522+
break;
523+
}
524+
extra = val - 10;
525+
526+
reversedHead = reversedHead.next;
527+
}
528+
529+
// if extra != 0, need to carry to next digit
530+
if(extra > 0){
531+
reversedHead.next = new ListNode(extra);
532+
}
533+
534+
ListNode res = reverseNode(reversedHead);
535+
return res;
536+
}
537+
538+
private ListNode reverseNode(ListNode node){
539+
ListNode _prev = null;
540+
ListNode cur = node;
541+
542+
while(cur != null){
543+
ListNode _next = cur.next;
544+
cur.next = _prev;
545+
_prev = cur;
546+
cur = _next; // NOTE this !!!
547+
}
548+
return _prev; // NOTE this !!!
516549
}
517550

551+
552+
// v2
553+
// public ListNode plusOne(ListNode head) {
554+
// if (head == null){
555+
// return new ListNode(1); // ??
556+
// }
557+
// ListNode tmp = new ListNode();
558+
//// // reverse
559+
//// while(head != null){
560+
//// ListNode _next = head.next;
561+
//// ListNode _prev = tmp; // ??
562+
//// head.next = _prev;
563+
//// head = _next;
564+
//// }
565+
//// tmp.val += 1; // ??
566+
//
567+
//
568+
// return null;
569+
// }
570+
518571
// v1
519572
// public ListNode plusOne_1(ListNode head) {
520573
// if (head == null){

0 commit comments

Comments
 (0)