Skip to content

Commit 8f1990e

Browse files
authored
Merge pull request #1785 from s0ooo0k/main
2 parents a2c03a6 + 0306851 commit 8f1990e

File tree

5 files changed

+102
-0
lines changed

5 files changed

+102
-0
lines changed

combination-sum/s0ooo0k.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
class Solution {
2+
List<List<Integer>> result = new ArrayList<>();
3+
int[] candidates;
4+
5+
public List<List<Integer>> combinationSum(int[] candidates, int target) {
6+
this.candidates=candidates;
7+
backtrack(new ArrayList<>(), target, 0);
8+
return result;
9+
}
10+
void backtrack(List<Integer> comb, int remain, int start) {
11+
if(remain==0) {
12+
result.add(new ArrayList<>(comb));
13+
return;
14+
}
15+
if(remain<0) return;
16+
for(int i=start; i<candidates.length; i++) {
17+
comb.add(candidates[i]);
18+
backtrack(comb, remain-candidates[i], i);
19+
comb.remove(comb.size() - 1);
20+
}
21+
}
22+
}
23+

decode-ways/s0ooo0k.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
class Solution {
2+
public int numDecodings(String s) {
3+
if(s.charAt(0)=='0') return 0;
4+
5+
int n = s.length();
6+
int[] dp = new int[n+1];
7+
8+
dp[0]=1;
9+
dp[1]=1;
10+
11+
for(int i=2; i<=n; i++) {
12+
if(s.charAt(i-1)!='0') dp[i]+=dp[i-1];
13+
14+
int group = Integer.parseInt(s.substring(i-2, i));
15+
if(group>=10 && group<=26) {
16+
dp[i]+=dp[i-2];
17+
}
18+
}
19+
return dp[n];
20+
}
21+
}
22+

maximum-subarray/s0ooo0k.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class Solution {
2+
public int maxSubArray(int[] nums) {
3+
int curr = nums[0];
4+
int maxSum = nums[0];
5+
6+
for(int i=1; i<nums.length; i++) {
7+
curr = Math.max(nums[i], curr+nums[i]);
8+
maxSum = Math.max(maxSum, curr);
9+
}
10+
return maxSum;
11+
}
12+
}
13+

number-of-1-bits/s0ooo0k.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution {
2+
public int hammingWeight(int n) {
3+
/*
4+
* 시간복잡도 O(log n)
5+
*/
6+
int cnt = 0;
7+
while(n!=0) {
8+
if(n%2==1) cnt++;
9+
n = n / 2;
10+
}
11+
return cnt;
12+
}
13+
}
14+

valid-palindrome/s0ooo0k.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
class Solution {
2+
/*
3+
* 초반 풀이 시 while문 내에서 left<right 미체크로 오류 / 조건 추가
4+
* 중복 while문 사용하지 않는 방법이 있는지 고민
5+
*
6+
* 시간복잡도 : O(n)
7+
*/
8+
public boolean isPalindrome(String s) {
9+
int left = 0;
10+
int right = s.length()-1;
11+
12+
while(left < right) {
13+
while(left<right && !Character.isLetterOrDigit(s.charAt(left))) {
14+
left++;
15+
}
16+
while(left<right && !Character.isLetterOrDigit(s.charAt(right))) {
17+
right--;
18+
}
19+
20+
if (Character.toLowerCase(s.charAt(left)) != Character.toLowerCase(s.charAt(right))) {
21+
return false;
22+
}
23+
24+
left++;
25+
right--;
26+
}
27+
return true;
28+
}
29+
}
30+

0 commit comments

Comments
 (0)