var singleNonDuplicate = function(nums) {
if(nums.length===1)return nums[0]
let idx=0
while(idx<nums.length){
if(nums[idx]===nums[idx+1]){
idx+=2
}else{
break
}
}
return nums[idx]
}
var mySqrt = function(x) {
let l=0,r=x
while(l<=r){
let mid=Math.floor((r-l)/2)+l
if(mid*mid===x){
return mid
}else if(mid*mid<x){
l=mid+1
}else{
r=mid-1
}
}
return r
};
var minEatingSpeed = function(piles, h) {
let l=1,r=Math.max(...piles)
let k=r
while(l<r){
let mid=Math.floor((r-l)/2)+l
if(getTime(piles,mid)<=h){
k=mid
r=mid
}else{
l=mid+1
}
}
return k
}
const getTime=(piles,k)=>{
let res=0
for(let i of piles){
res+=Math.ceil(i/k)
}
return res
}
var merge = function(intervals) {
intervals.sort((a,b)=>a[0]-b[0])
let res=[intervals[0]]
for(let i=1;i<intervals.length;i++){
const [l,r]=intervals[i]
const [endL,endR]=res[res.length-1]
if(l===intervals[i-1][0]){
res[res.length-1][1]=Math.max(res[res.length-1][1],r)
}else{
if(l>endR){
res.push([l,r])
}else{
if(r>endR){
res[res.length-1][1]=r
}
}
}
}
return res
};