Skip to content

Commit 99be045

Browse files
committed
2 parents 8bd9987 + 817ea16 commit 99be045

File tree

4 files changed

+95
-0
lines changed

4 files changed

+95
-0
lines changed

java/_257BinaryTreePaths.java

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import java.util.List;
2+
3+
import javax.management.relation.RelationTypeSupport;
4+
import javax.swing.tree.TreeNode;
5+
6+
/**
7+
* Given a binary tree, return all root-to-leaf paths.
8+
*
9+
* For example, given the following binary tree:
10+
*
11+
* 1
12+
* / \
13+
* 2 3
14+
* \
15+
* 5
16+
* All root-to-leaf paths are:
17+
*
18+
* ["1->2->5", "1->3"]
19+
*/
20+
21+
public class _257BinaryTreePaths {
22+
public List<String> binaryTreePaths(TreeNode root) {
23+
List<String> result = new ArrayList<>();
24+
if (root != null) {
25+
search(root, "", result);
26+
}
27+
return result;
28+
}
29+
30+
public void search(TreeNode node, String path, List<String> result) {
31+
if (node.left == null && node.right == null) {
32+
result.add(path + node.val);
33+
}
34+
if (node.left != null) {
35+
search(node.left, path + node.val + "->", result);
36+
}
37+
if (node.right != null) {
38+
search(node.right, path + node.val + "->", result);
39+
}
40+
}
41+
}

java/_258AddDigits.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
/**
2+
* Given a non-negative integer num, repeatedly add all its digits until the result has only one digit.
3+
*
4+
* For example:
5+
*
6+
* Given num = 38, the process is like: 3 + 8 = 11, 1 + 1 = 2. Since 2 has only one digit, return it.
7+
*
8+
* Follow up:
9+
* Could you do it without any loop/recursion in O(1) runtime?
10+
*/
11+
public class _258AddDigits {
12+
public int addDigits(int num) {
13+
int result = num % 9;
14+
return (result != 0 || num == 0) ? result : 9;
15+
}
16+
}

java/_283MoveZeroes.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/**
2+
* Given an array nums, write a function to move all 0's to the end of it while maintaining the relative order of the non-zero elements.
3+
*
4+
* For example, given nums = [0, 1, 0, 3, 12], after calling your function, nums should be [1, 3, 12, 0, 0].
5+
*
6+
* Note:
7+
* You must do this in-place without making a copy of the array.
8+
* Minimize the total number of operations.
9+
*/
10+
11+
public class _283MoveZeroes {
12+
public void moveZeroes(int[] nums) {
13+
if (nums == null || nums.length == 0) {
14+
return;
15+
}
16+
int index = 0;
17+
for (int i = 0; i < nums.length; i++) {
18+
if (nums[i] != 0) {
19+
nums[index++] = nums[i];
20+
}
21+
}
22+
for (int i = index; i < nums.length; i++) {
23+
nums[i] = 0;
24+
}
25+
}
26+
}

java/_292NimGame.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/**
2+
* You are playing the following Nim Game with your friend: There is a heap of stones on the table, each time one of you take turns to remove 1 to 3 stones. The one who removes the last stone will be the winner. You will take the first turn to remove the stones.
3+
*
4+
* Both of you are very clever and have optimal strategies for the game. Write a function to determine whether you can win the game given the number of stones in the heap.
5+
*
6+
* For example, if there are 4 stones in the heap, then you will never win the game: no matter 1, 2, or 3 stones you remove, the last stone will always be removed by your friend.
7+
*/
8+
public class _292NimGame {
9+
public boolean canWinNim(int n) {
10+
return n % 4 != 0;
11+
}
12+
}

0 commit comments

Comments
 (0)