【1】两数之和
public class TwoNumAddiction {
public static void main(String[] args) {
int[] nums = {3,3};
int target = 6;
int[] indexArr = new SolutionNumAddiction().twoSum(nums, target);
for (int index : indexArr) {
System.out.println(index);
}
}
}
class SolutionNumAddiction {
public int[] twoSum(int[] nums, int target) {
List<Integer> numsList = Arrays.stream(nums).boxed().collect(Collectors.toList());
for (int i = 0; i < numsList.size(); i++) {
Integer now = target - numsList.get(i);
int index1 = numsList.lastIndexOf(now);
if (index1 != -1 && index1 != i) {
int[] indexArr = {i, index1};
return indexArr;
}
}
return null;
}
}
【49】字母异位词分组
public class ZiMuYiWeiCi {
public static void main(String[] args) {
String[] strs = {"a"};
List<List<String>> res = new ZiMuYiWeiCiSolution().groupAnagrams(strs);
System.out.println(res);
}
}
class ZiMuYiWeiCiSolution {
public List<List<String>> groupAnagrams(String[] strs) {
//使用了HashMap来存储排序后的字符串(键)和它们对应的原始字符串列表(值)
HashMap<String, List<String>> map = new HashMap<>();
for (String str : strs) {
char[] chars = str.toCharArray();
Arrays.sort(chars);
String sortedStr = new String(chars);
if (map.containsKey(sortedStr)){
List list = map.get(sortedStr);
list.add(str);
}else {
List<String> strList = new ArrayList<>();
strList.add(str);
map.put(sortedStr, strList);
}
}
return new ArrayList<>(map.values());
}
}