Skip to content

Commit 016ac24

Browse files
authored
Merge pull request #294 from Vivekpusti/main
Implement solution for split array subsequences
2 parents e4c78bc + dad89a2 commit 016ac24

1 file changed

Lines changed: 79 additions & 0 deletions

File tree

October_2025/potd_24_10_2025.java

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
// Split Array Subsequences
2+
3+
class Solution {
4+
5+
public boolean isPossible(int[] arr, int k) {
6+
// Code here
7+
LinkedHashMap<Integer, Integer> lm = new LinkedHashMap<>();
8+
ArrayList<ArrayList<Integer>> list = new ArrayList<>();
9+
10+
for(int num:arr){
11+
lm.put(num, lm.getOrDefault(num, 0) + 1);
12+
}
13+
14+
if(lm.size()<k) return false;
15+
16+
while(lm.size()>=k){
17+
Iterator<Map.Entry<Integer, Integer>> iterator = lm.entrySet().iterator();
18+
ArrayList<Integer> al = new ArrayList<>();
19+
int num = 0;
20+
while(iterator.hasNext()){
21+
Map.Entry<Integer, Integer> entry = iterator.next();
22+
if(num!=0 && num+1!=entry.getKey()){
23+
break;
24+
}
25+
26+
num = entry.getKey();
27+
if(entry.getValue()==1){
28+
iterator.remove();
29+
}else{
30+
lm.put(num, entry.getValue()-1);
31+
}
32+
33+
al.add(num);
34+
}
35+
list.add(al);
36+
}
37+
38+
if(lm.size()==0) return true;
39+
40+
for(Map.Entry<Integer, Integer> entry:lm.entrySet()){
41+
int num = entry.getKey();
42+
for(int i=0;i<entry.getValue();i++){
43+
int j=0, flag = 0;
44+
ArrayList<Integer> al = new ArrayList<>();
45+
for(j=0;j<list.size();j++){
46+
al = list.get(j);
47+
if(num+1==al.get(0)){
48+
al.addFirst(num);
49+
break;
50+
}
51+
if(num-1==al.get(al.size()-1)){
52+
al.add(num);
53+
break;
54+
}
55+
if(num>al.get(0) && num<al.get(al.size()-1)){
56+
int index = al.indexOf(num);
57+
if(index+1>=k && al.size()-index>=k-1){
58+
ArrayList<Integer> temp = new ArrayList<>(al.subList(index+1, al.size()));
59+
ArrayList<Integer> temp1 = new ArrayList<>(al.subList(0, index));
60+
list.add(temp);
61+
list.add(temp1);
62+
list.remove(j);
63+
flag = 1;
64+
}
65+
}
66+
}
67+
if(flag==0){
68+
if(j<list.size()){
69+
list.set(j, al);
70+
}else{
71+
return false;
72+
}
73+
}
74+
}
75+
}
76+
77+
return true;
78+
}
79+
}

0 commit comments

Comments
 (0)