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