386. 字典序排数
class Solution {
List<Integer> pathList = new ArrayList<>();
public List<Integer> lexicalOrder(int n) {
for (int i = 1; i <= 9; i++) {
dfs(i, n);
}
return pathList;
}
private void dfs(int cur, int n) {
if (cur > n) return;
pathList.add(cur);
for (int i = 0; i <= 9; i++) {
if (cur * 10 + i > n) return;
dfs(cur * 10 + i, n);
}
}
}
300. 最长递增子序列
class Solution {
public int lengthOfLIS(int[] nums) {
if (nums == null || nums.length == 0) return 0;
int n = nums.length;
int[] dp = new int[n];
Arrays.fill(dp, 1);
for (int i = 0; i < n; i++) {
for (int j = 0; j < i; j++) {
if (nums[i] > nums[j]) {
dp[i] = Math.max(dp[i], dp[j] + 1);
}
}
}
int res = 0;
for (int i = 0; i < n; i++) {
res = Math.max(res, dp[i]);
}
return res;
}
}
461. 汉明距离
class Solution {
public int hammingDistance(int x, int y) {
return bitCount(x ^ y);
}
private int bitCount(int cur) {
int count = 0;
while (cur > 0) {
if (cur % 2 == 1) {
count++;
}
cur >>= 1;
}
return count;
}
}
821. 字符的最短距离
class Solution {
public int[] shortestToChar(String s, char c) {
if (s == null || s.length() == 0) return new int[]{};
int len = s.length();
int[] answer = new int[len];
Arrays.fill(answer, Integer.MAX_VALUE);
Set<Integer> cIndex = new HashSet<>();
for (int i = 0; i < len; i++) {
if (s.charAt(i) == c) cIndex.add(i);
}
for (int i = 0; i < len; i++) {
for (Integer index : cIndex) {
int distance = Math.abs(index - i);
answer[i] = Math.min(distance, answer[i]);
System.out.println(answer[i]);
}
}
return answer;
}
}