Skip to content

Commit fe51662

Browse files
Added
1 parent 13e7776 commit fe51662

File tree

132 files changed

+4524
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

132 files changed

+4524
-0
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
class Solution {
2+
public int maxProfit(int[] prices) {
3+
int minSoFar = prices[0];
4+
int ans = 0;
5+
6+
for(int i = 1; i < prices.length; i++) {
7+
int profit = prices[i] - minSoFar;
8+
if (profit > ans) {
9+
ans = profit;
10+
}
11+
12+
minSoFar = Math.min(prices[i], minSoFar);
13+
}
14+
15+
return ans;
16+
}
17+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
public class Codec {
2+
3+
public String encode(List<String> strs) {
4+
StringBuilder sb = new StringBuilder();
5+
for (String s : strs) {
6+
int i = 0;
7+
while (i < s.length()) {
8+
if (s.charAt(i) == ';') {
9+
sb.append("/;");
10+
}
11+
else if (s.charAt(i) == '/') {
12+
sb.append("//");
13+
}
14+
else {
15+
sb.append(s.charAt(i));
16+
}
17+
i++;
18+
}
19+
sb.append(";");
20+
}
21+
22+
return sb.toString();
23+
}
24+
25+
public List<String> decode(String s) {
26+
List<String> decodedStrings = new ArrayList<>();
27+
28+
StringBuilder currentString = new StringBuilder();
29+
30+
int i = 0;
31+
while (i < s.length()) {
32+
if (s.charAt(i) == '/') {
33+
currentString.append(s.charAt(i + 1));
34+
i += 2;
35+
}
36+
else if (s.charAt(i) != ';') {
37+
currentString.append(s.charAt(i));
38+
i++;
39+
}
40+
else {
41+
decodedStrings.add(currentString.toString());
42+
currentString.setLength(0);
43+
i++;
44+
}
45+
}
46+
47+
return decodedStrings;
48+
}
49+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import java.util.Random;
2+
3+
class Solution {
4+
public int[][] kClosest(int[][] points, int k) {
5+
int left = 0, right = points.length - 1;
6+
while (left <= right) {
7+
int pivotIndex = partition(points, left, right);
8+
if (pivotIndex == k - 1) {
9+
break;
10+
} else if (pivotIndex < k - 1) {
11+
left = pivotIndex + 1;
12+
} else {
13+
right = pivotIndex - 1;
14+
}
15+
}
16+
17+
int[][] result = new int[k][2];
18+
for (int i = 0; i < k; i++) {
19+
result[i] = points[i];
20+
}
21+
22+
return result;
23+
}
24+
25+
private int partition(int[][] points, int left, int right) {
26+
int pivotIndex = left + new Random().nextInt(right - left + 1);
27+
int[] pivotPoint = points[pivotIndex];
28+
swap(points, pivotIndex, right);
29+
30+
int i = left;
31+
for (int j = left; j < right; j++) {
32+
if (compare(points[j], pivotPoint) < 0) {
33+
swap(points, i++, j);
34+
}
35+
}
36+
swap(points, i, right);
37+
return i;
38+
}
39+
40+
private int compare(int[] point1, int[] point2) {
41+
return (point1[0] * point1[0] + point1[1] * point1[1]) -
42+
(point2[0] * point2[0] + point2[1] * point2[1]);
43+
}
44+
45+
private void swap(int[][] points, int i, int j) {
46+
int[] temp = points[i];
47+
points[i] = points[j];
48+
points[j] = temp;
49+
}
50+
}
51+
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
class Solution {
2+
public int findMaxConsecutiveOnes(int[] nums) {
3+
int ans = 0;
4+
int count = 0;
5+
6+
for(int i = 0; i < nums.length; i++) {
7+
if (nums[i] == 0) {
8+
count = 0;
9+
}
10+
else {
11+
count++;
12+
}
13+
if (count > ans) {
14+
ans = count;
15+
}
16+
}
17+
18+
return ans;
19+
}
20+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
class Solution {
2+
public int maxProduct(int[] nums) {
3+
if (nums == null || nums.length == 0) {
4+
return 0;
5+
}
6+
7+
int maxProduct = nums[0];
8+
int minProduct = nums[0];
9+
10+
int result = nums[0];
11+
12+
for(int i = 1; i < nums.length; i++) {
13+
if (nums[i] >= 0) {
14+
maxProduct = Math.max(nums[i], maxProduct * nums[i]);
15+
minProduct = Math.min(nums[i], minProduct * nums[i]);
16+
}
17+
else {
18+
int temp = maxProduct;
19+
maxProduct = Math.max(nums[i], minProduct * nums[i]);
20+
minProduct = Math.min(nums[i], temp * nums[i]);
21+
}
22+
23+
result = Math.max(result, maxProduct);
24+
}
25+
26+
return result;
27+
}
28+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
class Solution {
2+
public int[] productExceptSelf(int[] nums) {
3+
int[] left = new int[nums.length];
4+
int[] right = new int[nums.length];
5+
6+
int[] output = new int[nums.length];
7+
8+
int n = nums.length;
9+
10+
left[0] = 1;
11+
right[n-1] = 1;
12+
13+
for(int i = 1; i < n; i++) {
14+
left[i] = left[i-1]*nums[i-1];
15+
}
16+
17+
for(int i = n - 2; i >= 0; i--) {
18+
right[i] = right[i+1]*nums[i+1];
19+
}
20+
21+
for(int i = 0; i < n; i++) {
22+
output[i] = left[i]*right[i];
23+
}
24+
25+
return output;
26+
}
27+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
class Solution {
2+
public void rotate(int[] nums, int k) {
3+
4+
int n = nums.length;
5+
k = k%n;
6+
reverse(nums, 0, n - 1);
7+
reverse(nums, 0, k - 1);
8+
reverse(nums, k, n - 1);
9+
}
10+
11+
void reverse(int[] nums, int start, int end) {
12+
int i = start, j = end;
13+
14+
while (i < j) {
15+
int temp = nums[i];
16+
nums[i] = nums[j];
17+
nums[j] = temp;
18+
i++;
19+
j--;
20+
}
21+
}
22+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
class Solution {
2+
public boolean isValidSudoku(char[][] board) {
3+
Set<Character>[] rowSet = new HashSet[9];
4+
Set<Character>[] colSet = new HashSet[9];
5+
Set<Character>[] gridSet = new HashSet[9];
6+
7+
for(int i = 0; i < 9; i++) {
8+
rowSet[i] = new HashSet<>();
9+
colSet[i] = new HashSet<>();
10+
gridSet[i] = new HashSet<>();
11+
12+
}
13+
14+
for(int i = 0; i < 9; i++) {
15+
for(int j = 0; j < 9; j++) {
16+
int gridNo = (i/3)*3 + (j/3);
17+
18+
if (board[i][j] != '.') {
19+
boolean isPresentInRow = rowSet[i].contains(board[i][j]);
20+
boolean isPresentInCol = colSet[j].contains(board[i][j]);
21+
boolean isPresentInGrid = gridSet[gridNo].contains(board[i][j]);
22+
23+
if (isPresentInRow || isPresentInCol || isPresentInGrid) {
24+
return false;
25+
}
26+
27+
rowSet[i].add(board[i][j]);
28+
colSet[j].add(board[i][j]);
29+
gridSet[gridNo].add(board[i][j]);
30+
}
31+
}
32+
}
33+
34+
return true;
35+
36+
}
37+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
class Solution {
2+
public int maxSubArray(int[] nums) {
3+
int maxSoFar = nums[0];
4+
int currentSum = nums[0];
5+
6+
for(int i = 1; i < nums.length; i++) {
7+
if (currentSum < 0) {
8+
currentSum = 0;
9+
}
10+
currentSum = currentSum + nums[i];
11+
if (currentSum > maxSoFar) {
12+
maxSoFar = currentSum;
13+
}
14+
}
15+
16+
return maxSoFar;
17+
}
18+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
class Solution {
2+
public int[] sortColors(int[] nums) {
3+
4+
int[] hash = new int[3];
5+
Arrays.fill(hash, 0);
6+
7+
8+
int i = 0;
9+
while (i < nums.length) {
10+
if (nums[i] == 0) hash[0] = hash[0] + 1;
11+
if (nums[i] == 1) hash[1] = hash[1] + 1;
12+
if (nums[i] == 2) hash[2] = hash[2] + 1;
13+
14+
i++;
15+
}
16+
i = 0;
17+
int k = 0;
18+
while (i < hash.length) {
19+
int j = hash[i];
20+
while (j > 0) {
21+
nums[k] = i;
22+
k++;
23+
j--;
24+
}
25+
i++;
26+
}
27+
return nums;
28+
}
29+
}

0 commit comments

Comments
 (0)