문제)
배열 nums에서 인덱스의 원소값과 인덱스+1의 원소값을 더했을 때 target 값과 같으면 해당 인덱스들을 반환한다.
방법 1)
class Solution {
public int[] twoSum(int[] nums, int target) {
for(int i=0; i<nums.length;i++){
for(int j=i+1; j<nums.length;j++)
if(nums[i]+nums[j]==target){
return new int[] {i,j};
}
}
return null;
}
}
이중 포문으로 i=0부터, j=i+1로 i==j인 상황을 막는다. 그리고 if문에서 더한 값이 target과 같으면 해당 인덱스들을 반환한다.
방법 2)
class Solution {
public int[] twoSum(int[] nums, int target) {
for(int i=0; i<nums.length;i++){
for(int j=i+1; j<nums.length;j++)
if(nums[i]==target-nums[j]){
return new int[] {i,j};
}
}
return null;
}
}
위와 비슷하지만 if문에서 target에서 nums[j]를 뺀 값이 nums[i]와 같을 때 해당 인덱스들을 반환한다. 메모리는 0.1MB가 늘었지만 Runtime이 거의 절반으로 줄어들었다. 이렇게 코드에 따라 달라지는것을 눈으로 확인하니 더욱 효율적으로 코드를 작성하도록 노력해야겠다.
'기본공부 > 알고리즘' 카테고리의 다른 글
[Leetcode] JAVA - Final Value of Variable After Performing Operations (Easy) (0) | 2021.09.06 |
---|---|
[Leetcode] JAVA - Concatenation of Array (Easy) (0) | 2021.09.05 |
[Leetcode] JAVA - Palindrome Number (Easy) (0) | 2021.09.03 |