classSolution{public:boolisPossible(vector<int>&nums){unordered_map<int,int>count;vector<int>starts;// Start index of subsequencevector<int>ends;// End index of subsequencefor(constintnum:nums)++count[num];for(inti=0;i<nums.size();++i){if(i>0&&nums[i]==nums[i-1])continue;constintnum=nums[i];constintcurrCount=count[num];constintprevCount=count.count(num-1)?count[num-1]:0;constintnextCount=count.count(num+1)?count[num+1]:0;for(intj=0;j<currCount-prevCount;++j)starts.push_back(num);for(intj=0;j<currCount-nextCount;++j)ends.push_back(num);}for(inti=0;i<starts.size();++i)if(ends[i]-starts[i]<2)returnfalse;returntrue;}};
importjava.util.List;classSolution{publicbooleanisPossible(int[]nums){Map<Integer,Integer>count=newHashMap<>();List<Integer>starts=newArrayList<>();// Start index of subsequenceList<Integer>ends=newArrayList<>();// End index of subsequencefor(finalintnum:nums)count.put(num,count.getOrDefault(num,0)+1);for(inti=0;i<nums.length;++i){if(i>0&&nums[i]==nums[i-1])continue;finalintnum=nums[i];finalintcurrCount=count.get(num);finalintprevCount=count.containsKey(num-1)?count.get(num-1):0;finalintnextCount=count.containsKey(num+1)?count.get(num+1):0;for(intj=0;j<currCount-prevCount;++j)starts.add(num);for(intj=0;j<currCount-nextCount;++j)ends.add(num);}for(inti=0;i<starts.size();++i)if(ends.get(i)-starts.get(i)<2)returnfalse;returntrue;}}