Solución
solution.tsTypeScript
export function countPairsWithSum(nums: number[], target: number): number {
/*con punteros*/
il = 0
ir = nums.length-1
count = 0
while(il<ir){
res = nums[il]+nums[ir]
if(res == target){
if(nums[il]==nums[ir]){
zt = ir-il
count+=parseInt(zt*(zt+1)/2)
break
}else{
dup_right=1
dup_left=1
while(il<nums.length && nums[il]==nums[il+1]){
dup_left++
il++
}
while(ir>=0 && nums[ir]==nums[ir-1]){
dup_right++
ir--
}
count+=dup_left>0 && dup_right>0 ? dup_left*dup_right : Math.max(1,Math.max(dup_left,dup_right))
il++
ir--
}
}
if(res>target){
ir--
}else if(res<target){
il++
}
}
return count
/*sin punteros*/
hash = {}
rt = 0
for(let i=0;i<nums.length;i++){
if(nums[i] in hash){
rt+=hash[nums[i]]
}
let pre = target-nums[i]
hash[pre] = (hash[pre] ?? 0)+1
}
return rt
}
1respuestas