Solución

@alexword·5/5/2026TypeScript
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
Respuestas
@alexwordAutor5/5/2026

O(n) pero sin usar los dos punteros solo para que tengan otro enfoque de una solucion

Escribir un comentario

Recuerda ser amable. Estás comentando la solución de otra persona. Comparte tu perspectiva de forma constructiva y respetuosa.

Debes iniciar sesión para publicar un comentario.