학습 기록 (Learning Logs)/알고리즘
https://leetcode.com/problems/binary-search/submissions/
devWonny
2022. 8. 16. 12:11
binary Search
1) inner class call
//기준 클래스
//클래스 내부 메서드를 호출한다.
public class BinarySearch {
// https://leetcode.com/problems/binary-search/
//main 메서드
public static void main(String[] args) {
int[] num = {-1,0,3,5,9,12};
// int target = 9;//4
int target = 2;//-1
int result = search(num,target);
System.out.println(result);
}
// static을 메서드에 달아줘야 main에서 호출이 가능하다
// 클래스 내부 메서드는 객체를 생성하지 않고 사용 가능
public static int search(int[] nums, int target) {
int start = 0;
int end = (nums.length)-1;//5
int mid =0;
while(start <= end){
System.out.println("start="+start+" end="+end+" mid="+mid);
mid = start + (end-start)/2;
System.out.println("first mid>> "+mid);// 1
if(target == nums[mid]){
return mid;
}
else if(target<nums[mid]){
end = mid-1;// 왼쪽으로 탐색해
}else{
start = mid+1;// 오른쪽으로 탐색해
}
}
return -1;
}
}
2) outer class call
//외부 클래스
class Solution {
public int search(int[] nums, int target) {
int start = 0;
int end = (nums.length)-1;//5
int mid =0;
while(start <= end){
System.out.println("start="+start+" end="+end+" mid="+mid);
mid = start + (end-start)/2;
System.out.println("first mid>> "+mid);// 1
if(target == nums[mid]){
return mid;
}
else if(target<nums[mid]){
end = mid-1;// 왼쪽으로 탐색해
}else{
start = mid+1;// 오른쪽으로 탐색해
}
}
return -1;
}
}
//외부 클래스를 객체를 생성해서 함수를 호출한다
//기준 클래스
public class BinarySearch2 {
// https://leetcode.com/problems/binary-search/
public static void main(String[] args) {
int[] num = {-1,0,3,5,9,12};
int target = 9;//4
Solution sol = new Solution();
int result = sol.search(num,target);
System.out.println(result);
}
}
3) javascirpt
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var search = function(nums, target) {
let left =0;
let right =nums.length -1;
while(right-left>=0){
let mid = left+parseInt((right-left)/2);
console.log(mid);
if(target == nums[mid]){
return mid;
}else if(target> nums[mid]){// 더 오른쪽
left = mid+1;
}else{
right = mid-1;
}
}
return -1;
};
4) python
class Solution:
def search(self, nums: List[int], target: int) -> int:
left, right = 0, len(nums)-1
while(left<=right):
mid = left + ((right-left)//2)
if nums[mid] == target:
return mid;
elif target > nums[mid]:
#오른쪽 탐색
left = mid+1
else: #왼쪽 탐색
right = mid-1
return -1