Skip to content

Commit 4eadd7e

Browse files
committed
update 817 java
1 parent bf7f607 commit 4eadd7e

File tree

4 files changed

+99
-76
lines changed

4 files changed

+99
-76
lines changed

data/progress.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
# Progress
22

3+
# 2025-01-01
4+
- https://github.com/yennanliu/CS_basics/blob/master/doc/Leetcode_company_frequency-master/Google%206months-%20LeetCode.pdf
5+
36
# 2024-12-31
47
- https://github.com/yennanliu/CS_basics/blob/master/doc/Leetcode_company_frequency-master/Google%206months-%20LeetCode.pdf
58

data/progress.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
20250101: 729,731
12
20241231: 769,817,855(again)
23
20241229: 498(again),934
34
20241228: 379,173

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

Lines changed: 28 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -58,58 +58,41 @@ public class LinkedListComponents {
5858
* }
5959
*/
6060
// V0
61-
// TODO : fix
62-
// public int numComponents(ListNode head, int[] nums) {
63-
//
61+
// IDEA: SET + LINKED LIST OP
62+
public int numComponents(ListNode head, int[] nums) {
63+
6464
// // edge
6565
// if (head.next == null && nums.length == 1){
6666
// if(head.val == nums[0]){
6767
// return 1;
6868
// }
6969
// return 0;
7070
// }
71-
//
72-
// // ListNode -> list
73-
// List<Integer> head_list = new ArrayList<>();
74-
// List<Integer> nums_list = new ArrayList<>();
75-
//
76-
// for(int i = 0; i < nums.length; i++){
77-
// nums_list.add(nums[i]);
78-
// }
79-
//
80-
// // sort nums_list
81-
// nums_list.sort(Integer::compareTo);
82-
//
83-
// while(head != null){
84-
// head_list.add(head.val);
85-
// head = head.next;
86-
// }
87-
//
88-
// System.out.println(">>> nums_list = " + nums_list);
89-
// System.out.println(">>> head_list = " + head_list);
90-
//
91-
// int cnt = 0;
92-
// boolean prevInNums = false;
93-
// // 2 pointers
94-
// for(int i = 0; i < head_list.size()-1; i++){
95-
// List<Integer> tmp = new ArrayList<>();
96-
// for(int j = i; j < head_list.size(); j++){
97-
// tmp.add(head_list.get(j));
98-
// if(!nums_list.contains(tmp)){
99-
// if (!tmp.isEmpty()){
100-
// cnt += 1;
101-
// }
102-
// break;
103-
// }
104-
// }
105-
// }
106-
//
107-
// if(prevInNums){
108-
// cnt += 1;
109-
// }
110-
//
111-
// return cnt;
112-
// }
71+
72+
Set<Integer> set = new HashSet<>();
73+
for(int x: nums){
74+
set.add(x);
75+
}
76+
77+
int cnt = 0;
78+
boolean pvevInSet = false;
79+
80+
while(head != null){
81+
82+
if(!set.contains(head.val)){
83+
if(pvevInSet){
84+
cnt += 1;
85+
}
86+
pvevInSet = false;
87+
}else{
88+
pvevInSet = true;
89+
}
90+
91+
head = head.next;
92+
}
93+
94+
return pvevInSet ? cnt+1 : cnt;
95+
}
11396

11497
// V1
11598
// IDEA: set, linkedlist (gpt)

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

Lines changed: 67 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1243,7 +1243,7 @@ public int maxChunksToSorted(int[] arr) {
12431243

12441244
// LC 817
12451245
// https://leetcode.com/problems/linked-list-components/
1246-
// 4,15 pm - 4.40 pm
1246+
// 1.10 pm - 1.20 pm
12471247
public int numComponents(ListNode head, int[] nums) {
12481248

12491249
// edge
@@ -1254,46 +1254,82 @@ public int numComponents(ListNode head, int[] nums) {
12541254
return 0;
12551255
}
12561256

1257-
// ListNode -> list
1258-
List<Integer> head_list = new ArrayList<>();
1259-
List<Integer> nums_list = new ArrayList<>();
1260-
1261-
for(int i = 0; i < nums.length; i++){
1262-
nums_list.add(nums[i]);
1257+
Set<Integer> set = new HashSet<>();
1258+
for(int x: nums){
1259+
set.add(x);
12631260
}
12641261

1265-
// sort nums_list
1266-
nums_list.sort(Integer::compareTo);
1262+
int cnt = 0;
1263+
boolean pvevInSet = false;
12671264

12681265
while(head != null){
1269-
head_list.add(head.val);
1270-
head = head.next;
1271-
}
12721266

1273-
System.out.println(">>> nums_list = " + nums_list);
1274-
System.out.println(">>> head_list = " + head_list);
1275-
1276-
int cnt = 0;
1277-
boolean prevInNums = false;
1278-
// 2 pointers
1279-
for(int i = 0; i < head_list.size()-1; i++){
1280-
List<Integer> tmp = new ArrayList<>();
1281-
for(int j = i; j < head_list.size(); j++){
1282-
tmp.add(head_list.get(j));
1283-
if(!nums_list.contains(tmp)){
1284-
if (!tmp.isEmpty()){
1285-
cnt += 1;
1286-
}
1287-
break;
1267+
if(!set.contains(head.val)){
1268+
if(pvevInSet){
1269+
cnt += 1;
12881270
}
1271+
pvevInSet = false;
1272+
}else{
1273+
pvevInSet = true;
12891274
}
1290-
}
12911275

1292-
if(prevInNums){
1293-
cnt += 1;
1276+
head = head.next;
12941277
}
12951278

1296-
return cnt;
1279+
return pvevInSet ? cnt+1 : cnt;
12971280
}
12981281

1282+
1283+
// public int numComponents(ListNode head, int[] nums) {
1284+
//
1285+
// // edge
1286+
// if (head.next == null && nums.length == 1){
1287+
// if(head.val == nums[0]){
1288+
// return 1;
1289+
// }
1290+
// return 0;
1291+
// }
1292+
//
1293+
// // ListNode -> list
1294+
// List<Integer> head_list = new ArrayList<>();
1295+
// List<Integer> nums_list = new ArrayList<>();
1296+
//
1297+
// for(int i = 0; i < nums.length; i++){
1298+
// nums_list.add(nums[i]);
1299+
// }
1300+
//
1301+
// // sort nums_list
1302+
// nums_list.sort(Integer::compareTo);
1303+
//
1304+
// while(head != null){
1305+
// head_list.add(head.val);
1306+
// head = head.next;
1307+
// }
1308+
//
1309+
// System.out.println(">>> nums_list = " + nums_list);
1310+
// System.out.println(">>> head_list = " + head_list);
1311+
//
1312+
// int cnt = 0;
1313+
// boolean prevInNums = false;
1314+
// // 2 pointers
1315+
// for(int i = 0; i < head_list.size()-1; i++){
1316+
// List<Integer> tmp = new ArrayList<>();
1317+
// for(int j = i; j < head_list.size(); j++){
1318+
// tmp.add(head_list.get(j));
1319+
// if(!nums_list.contains(tmp)){
1320+
// if (!tmp.isEmpty()){
1321+
// cnt += 1;
1322+
// }
1323+
// break;
1324+
// }
1325+
// }
1326+
// }
1327+
//
1328+
// if(prevInNums){
1329+
// cnt += 1;
1330+
// }
1331+
//
1332+
// return cnt;
1333+
// }
1334+
12991335
}

0 commit comments

Comments
 (0)