diff --git a/solution/0500-0599/0500.Keyboard Row/Solution.java b/solution/0500-0599/0500.Keyboard Row/Solution.java new file mode 100644 index 0000000000000..cf4cbd85e342b --- /dev/null +++ b/solution/0500-0599/0500.Keyboard Row/Solution.java @@ -0,0 +1,34 @@ +class Solution { + + public String[] findWords(String[] words) { + if (words == null) { + return null; + } + ArrayList list = new ArrayList<>(); + String[] keyboards = {"qwertyuiop", "asdfghjkl", "zxcvbnm"}; + for (int i = 0; i < words.length; i++) { + String word = words[i].toLowerCase(); + for (int j = 0; j < keyboards.length; j++) { + // 先用word首字符确定属于哪一行 + if (keyboards[j].indexOf(word.charAt(0)) > -1) { + // 判断word字符串所有字符是否都属于同一行 + boolean match = match(keyboards[j], word, list); + if (match) { + list.add(words[i]); + } + break; + } + } + } + return list.toArray(new String[list.size()]); + } + + private boolean match(String keyboard, String word, ArrayList list) { + for (int i = 1; i < word.length(); i++) { + if (keyboard.indexOf(word.charAt(i)) < 0) { + return false; + } + } + return true; + } +} diff --git a/solution/0500-0599/0501.Find Mode in Binary Search Tree/Solution.java b/solution/0500-0599/0501.Find Mode in Binary Search Tree/Solution.java new file mode 100644 index 0000000000000..c1b05e8549886 --- /dev/null +++ b/solution/0500-0599/0501.Find Mode in Binary Search Tree/Solution.java @@ -0,0 +1,45 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode(int x) { val = x; } + * } + */ +class Solution { + int max = 0; + int cur = 0; + TreeNode preNode = null; + + public int[] findMode(TreeNode root) { + ArrayList list = new ArrayList<>(); + findMode(root, list); + int[] res = new int[list.size()]; + for (int i = 0; i < list.size(); i++) { + res[i] = list.get(i); + } + return res; + } + + private void findMode(TreeNode root, ArrayList list) { + if (root == null) { + return; + } + findMode(root.left, list); + if (preNode != null && root.val == preNode.val) { + cur++; + } else { + cur = 1; + } + if (max < cur) { + max = cur; + list.clear(); + list.add(root.val); + } else if (max == cur) { + list.add(root.val); + } + preNode = root; + findMode(root.right, list); + } +}