class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int i = m - 1, j = n - 1, k = m + n - 1;
while (i >= 0 && j >= 0)
{
if (nums1[i] > nums2[j])
{
nums1[k--] = nums1[i];
--i;
}
else
{
nums1[k--] = nums2[j];
--j;
}
}
if (i < 0)
{
while (j >= 0)
{
nums1[k--] = nums2[j--];
}
}
else
{
while (i >= 0)
{
nums1[k--] = nums1[i--];
}
}
}
}
格雷编码,题都没怎么看懂…看了好久才明白什么意思
class Solution {
public List<Integer> grayCode(int n) {
List<Integer> res = new ArrayList<Integer>() {{ add(0); }};
int head = 1;
for (int i = 0; i < n; i++) {
for (int j = res.size() - 1; j >= 0; j--)
res.add(head + res.get(j));
head <<= 1;
}
return res;
}
}
class Solution {
public int maxDepth(TreeNode root) {
int num = 0;
if (root != null)
{
int num1 = maxDepth(root.left);
int num2 = maxDepth(root.right);
num = (num1 > num2 ? num1 : num2)+1;
}
return num;// 如果是叶子节点,那么返回0
}
}