LeetCode 75. Farbklassifikation + LeetCode 49. Alphabetische Wortgruppierung

Gedankengang

Verwenden Sie einfach die Auswahlsortierung. Die Zusammenführungssortierung kann nicht verwendet werden, und die Zusammenführungssortierung wird für ein Array separat angewendet.

der Code

class Solution {
    public void sortColors(int[] nums) {
        int min = 0;
        for(int i = 0;i<nums.length-1;i++){
            min = i;
            for(int j = i+1;j<nums.length;j++){
                min = nums[min]>nums[j]?j:min;
            }
            swap(nums,i,min);
       }

    }
    //交换两个元素
	public static void swap(int[] arr, int i, int j) {
		int tmp = arr[i];
		arr[i] = arr[j];
		arr[j] = tmp;
	}
}

49. Anagrammgruppierung

Gedankengang

Dieses Problem kann durch die Verwendung von List und Map gelöst werden, um zu beurteilen, ob es sich bei jedem Laden um denselben Buchstaben handelt.

Es gibt zwei Möglichkeiten, dies zu beurteilen, eine besteht darin, nach meiner Sortierung zu sortieren, und die andere besteht darin, eine Hash-Tabelle zu verwenden.

der Code

class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        List<List<String>> res = new ArrayList<List<String>>();
        if(strs == null || strs.length == 0){
            return res;
        }
        HashMap<String,Integer> map = new HashMap<>();
        for(String str:strs){
            char[] ch = str.toCharArray();
            Arrays.sort(ch);
            String s = new String(ch);
            if(map.containsKey(s)){
                List list = new ArrayList();
                list = res.get(map.get(s));
                list.add(str);
            }else{
                List list = new ArrayList();
                list.add(str);
                map.put(s,res.size());
                res.add(list);
            }
        }
        return res;
    }
}

Supongo que te gusta

Origin blog.csdn.net/weixin_56640241/article/details/125171469
Recomendado
Clasificación