๐Ÿ’ป Coding Problems Solving/Two Pointers | Binary Search| LinkedList

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์—ฐ์†๋œ ๋ถ€๋ถ„ ์ˆ˜์—ด์˜ ํ•ฉ (์ž๋ฐ” java)

Kim_dev 2023. 5. 15. 22:22

1. ๋ฌธ์ œ : https://school.programmers.co.kr/learn/courses/30/lessons/178870

 

2. ํ’€์ด

ํˆฌํฌ์ธํ„ฐ ํ™œ์šฉ ๋‘๊ฐœ๋กœ ์‹œ์ž‘ํ•ด์„œ K๊ฐ’ ๊ธฐ์ค€์œผ๋กœ L,R์›€์ง์—ฌ์ฃผ๋Š” ํ’€์ด๋ฐฉ์‹

 

3. ์ฝ”๋“œ

class Solution {
    public int[] solution(int[] sequence, int k) {        

    	int left = 0;
    	int right = 0;
    	int sum = 0;
    	int size = sequence.length;
    	int ans1 = 0;
    	int ans2 = 0;
    	
    	for(right=0; right<sequence.length; right++) {    		
    		sum += sequence[right];
    		
    		while(sum > k) {
    			sum -= sequence[left];
    			left++;
    		}
    		
    		if(sum == k) {
    			if(size > right-left) {
    				size = right-left;
    				ans1 = left;
    				ans2 = right;
    			}
    			else if(size == right-left) {
    				ans1 = Math.min(ans1, left);
    				ans2 = Math.min(ans2, right);
    			}
    		}
    		
    	}
    	
    	return new int[] {ans1, ans2};
    }
}