1.两数之和
1.两数之和
Java解法
class Solution {public int[] twoSum(int[] nums, int target) {Map<Integer, Integer> record = new HashMap<>();for(int i = 0; i < nums.length; i++) {int temp = target - nums[i];if (record.containsKey(temp)) {return new int[]{record.get(temp), i};}record.put(nums[i], i);}return new int[]{};}
}
Golang解法
func twoSum(nums []int, target int) []int {record := make(map[int]int)for i := 0; i < len(nums); i++ {temp := target - nums[i]value, ok := record[temp]if ok {return []int{value, i}}record[nums[i]] = i}return []int{}
}
2.字母异位词分组
49.字母异位词分组
Java解法
class Solution {public List<List<String>> groupAnagrams(String[] strs) {if (strs == null || strs.length == 0) {return new ArrayList<>();}Map<String, List<String>> record = new HashMap<>();for (String str : strs) {char[] charArray = str.toCharArray();Arrays.sort(charArray);String sortedStr = new String(charArray);if (!record.containsKey(sortedStr)) {record.put(sortedStr, new ArrayList<>());}record.get(sortedStr).add(str);}return new ArrayList<>(record.values());}
}
Golang解法
func groupAnagrams(strs []string) [][]string {record := make(map[string][]string)for _, str := range strs {charSlice := []rune(str)sort.Slice(charSlice, func(i, j int) bool {return charSlice[i] < charSlice[j]})sortedStr := string(charSlice)record[sortedStr] = append(record[sortedStr], str)}result := make([][]string, 0, len(record))for _, v := range record {result = append(result, v)}return result
}
3.最长连续序列
128.最长连续序列
Java解法
class Solution {public int longestConsecutive(int[] nums) {if (nums.length == 0) {return 0;}Set<Integer> record = new HashSet<>();for(int num : nums) {record.add(num);}int result = 0;for(int num : record) {if(!record.contains(num - 1)) {int currentNum = num;int length = 1;while (record.contains(currentNum + 1)) {currentNum++;length++;}result = Math.max(result, length);}}return result;}
}
Golang解法
func longestConsecutive(nums []int) int {if len(nums) == 0 {return 0}record := make(map[int]int)for _, num := range nums {record[num] = num}result := 0for num, _ := range record {if _, ok := record[num-1]; !ok {currentNum := numlength := 1_, isExist := record[currentNum+1]for isExist {currentNum++length++_, isExist = record[currentNum+1]}if result < length {result = length}}}return result
}