반응형
287. Find the Duplicate Number
LeetCode - The World's Leading Online Programming Learning Platform
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
중복된 숫자를 골라내는것 문제
굉장히 쉬워보였는데
문제의 의도는 빠른 코드를 짜라는 것이였나보다
할줄아는것이 포문 두번돌리는 것 뿐이라 이렇게짯는데 타임리밋에 걸렸다
/**
* @param {number[]} nums
* @return {number}
*/
var findDuplicate = function(nums) {
for(let i = 0; i <= nums.length; i++){
for(let l = i+1; l < nums.length; l++){
if(nums[i] == nums[l]){
return nums[l]
}
}
}
};
아래 토픽을 보니 투포인터로 풀어야하나보다 뭔지몰라서 챗지피티로 힌트를 오지게 받아서 풀어봄
신기한방법이였다 포문 안쓰고 와일문 돌린다음에 첫번째 두번째 포인트를 지정한다음에 일정조건 만족하지 않으면 계속 포인터에 1씩더해서 비교함 ㄷㄷ 쩌러;;ㅋ
/**
* @param {number[]} nums
* @return {number}
*/
var findDuplicate = function(nums) {
nums.sort(); // 첨에 소팅해주고
firstPointer = 0; // 첨포인터 0으로
secondPointer = 1; //두번째 포인터 1로
while(firstPointer < nums.length){ //첨포인터가 넘스의 길이보다 작으면 계속돌려
if(nums[firstPointer] === nums[secondPointer]){ //두포인터가 가르키는 숫자가 같으면
return nums[firstPointer]; // 중복되는 숫자 리턴
}
//아니면 두포인터 숫자 1씩 증가
firstPointer++;
secondPointer++;
}
};
이거 재밌다 ㅎ
근데 속도가 느린것같은데...
에바아님?
풀긴했어도 까오가 있지
꼴찌는 할수 없다
일단 실컷 비웃으라고 베리 슬로우 솔루션이라고 공유 한번하고 🤪
챗지피티한테 힌트받아서 다시푼다
배열을 소팅하는데서 느려지는것 같다.
중복을 허용하지 않는 Set을 써야한단다
.has()함수는 그배열이 값 갖고있는지 확인해서 불리언으로 리턴해주는 함수다
/**
* @param {number[]} nums
* @return {number}
*/
var findDuplicate = function(nums) {
let numsSet = new Set(); //중복 허용하지 않는 Set자료구조를 사용하자!
for(let num of nums){ // 넘스배열을 넘으로 하나씩돌리면서
if(numsSet.has(num)){ //넘셋이 넘을 갖고있으면
return num //리턴~
}
numsSet.add(num)//아니면 넘셋에 넘 넣어
}
};
일등은 못하더라도 꼴등은 하지말고 중간만 하자
중간만해도 난 운이 좋아서 더잘됨 ㅎ
반응형
'코딩테스트' 카테고리의 다른 글
338. Counting Bits (0) | 2024.02.19 |
---|---|
199. Binary Tree Right Side View (0) | 2024.02.17 |
121. Best Time to Buy and Sell Stock (1) | 2024.02.13 |
125. Valid Palindrome (1) | 2024.02.13 |
56. Merge Intervals (1) | 2024.02.08 |