JavaScript - LeetCode Random Algorithm Test(8)

먹보·2023년 3월 13일
0

1. Plus One (No.0066)

문제 설명

You are given a large integer represented as an integer array digits, where each digits[i] is the ith digit of the integer. The digits are ordered from most significant to least significant in left-to-right order. The large integer does not contain any leading 0's.
Increment the large integer by one and return the resulting array of digits.

해석

하나의 큰 정수가 배열에 자리 숫자가 쪼개진 상태로 주어졌을 때, (즉 배열의 각 요소들은 정수의 ith 자리를 뜻하는 것 이라고 보면 된다), 그 정수보다 딱 1만큼 더 큰 정수를 같은 종류의 배열로 반환 하는 함수를 구현해주세요.

예제

코드

//다양한 메서드를 사용한 풀이법
var plusOne = function(digits) {
  const plus = (BigInt(digits.join(""))+1n).toString();
  const answer = []
  for (let i = 0 ; i < plus.length ; i++){
    answer.push(Number(plus[i]))
  }
  return answer
};
///보다 직관적인 풀이법 
var plusOne = function(digits) {
for(var i = digits.length - 1; i >= 0; i--){
     digits[i]++; 
    if(digits[i] > 9){
        digits[i] = 0;
    }else{
        return digits;
    }
}
digits.unshift(1);
return digits;
};

🗒️코멘트

NULL


2. Find Target Indices After Sorting Array (No.2089)

문제 설명

You are given a 0-indexed integer array nums and a target element target.
A target index is an index i such that nums[i] == target.
Return a list of the target indices of nums after sorting nums in non-decreasing order. If there are no target indices, return an empty list. The returned list must be sorted in increasing order.

해석

정수의 배열과 타겟 숫자가 주어졌을 때, 만약 오름차순으로 정렬 된 배열 내 그 목표 타겟 숫자가 있으면 그 타겟 숫자의 인덱스를 배열에 담아 반환하는 함수를 구현해주세요.

예제

코드

function targetIndices(nums: number[], target: number): number[] {
  const targetLocation : number[] = [];
  nums.sort((a,b) => a - b).forEach((el,i) => {
    if(el === target){
      targetLocation.push(i)
    }
  })
  return targetLocation
};

🗒️코멘트

NULL


3. Shortest Distance to Target String in a Circular Array (No.2515)

문제 설명

You are given a 0-indexed circular string array words and a string target. A circular array means that the array's end connects to the array's beginning.

Formally, the next element of words[i] is words[(i + 1) % n] and the previous element of words[i] is words[(i - 1 + n) % n], where n is the length of words.

Starting from startIndex, you can move to either the next word or the previous word with 1 step at a time.
Return the shortest distance needed to reach the string target. If the string target does not exist in words, return -1.

해석

순환하는 배열 (배열의 끝에서 처음으로 연결되는 배열)과 목표 단어 그리고 시작 지점이 주어졌을 때, 시작 지점에서 목표 단어까지의 최소 거리를 구하는 함수를 구현해주세요.

예제

코드

function closetTarget(words: string[], target: string, startIndex: number): number {
    let left = startIndex
    let right = startIndex
    let step = 0
    let n = words.length
    
    while(step <= n){
        if(words[left]===target||words[right]===target){
            return step
        } else {
            right = (right + 1) % n
            left = (left - 1 + n) % n
        }
        step ++
    }
    return -1
};

🗒️코멘트

돈다는 것이 약간 어려웠지만 문제 자체에 힌트가 있어 그걸 이용해서 풀었다.

profile
🍖먹은 만큼 성장하는 개발자👩‍💻

0개의 댓글