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;
    }
}