class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int p1 = 0;//遍历数组1
int p2 = 0;//遍历数组2
int[] nums3 = new int[m + n];
int p = 0;
while (p1 < m && p2 < n) {//当数组1、2都没遍历完
nums3[p++] = nums1[p1] <= nums2[p2] ? nums1[p1++] : nums2[p2++];
}
while (p1 < m) {
nums3[p++] = nums1[p1++];
}
while (p2 < n) {
nums3[p++] = nums2[p2++];
}
for (int i = 0; i < m + n; i++) {
nums1[i] = nums3[i];
}
}
}
1.2移除元素
class Solution {
public int removeElement(int[] nums, int val) {
if(nums.length<1) return 0;
int l = 0;
int r = nums.length - 1;
int res = 0;
while (l < r) {
if (nums[l] == val) {
//换到最末尾的元素一定是和val相同,但换过来的元素还没比较,因此不能直接l--
swap(l, r--, nums);
} else {
res++;//数组有效长度+1
l++;
}
}
if (nums[l] != val) {
res++;
}
return res;
}
public void swap(int a, int b, int[] nums) {
int temp = nums[a];
nums[a] = nums[b];
nums[b] = temp;
}
}
2.哈希表
2.1有效的字母异位词
class Solution {
public boolean isAnagram(String s, String t) {
if (s.length() != t.length()) return false;
int[] num = new int[26];
for (int i = 0; i < s.length();i++){
num[s.charAt(i)-'a']++;
num[t.charAt(i)-'a']--;
}
for (int i : num) {
if (i!=0){
return false;
}
}
return true;
}
}