
一、移除元素题源27. 移除元素 - 力扣LeetCode解析思路1创建新的数组遍历原数组将不为val的值放入新数组中不符合题目要求思路2双指针法创建两个变量srcdst1°若src指向的值为val则src2°若src指向的值不是valnums[dst] nums[src]srcdstint removeElement(int* nums, int numsSize, int val) { int src, dst; src dst 0; while(src numsSize) { if(nums[src] val) { src; } else { nums[dst] nums[src]; src; dst; } } return dst; }二、合并两个有序数组题源88. 合并两个有序数组 - 力扣LeetCode解析思路1将num2中的数据依次放入num1数组的后面用排序算法对num1进行排序。借助效率低下的排序算法会影响到整体的运行比如冒泡排序等思路2从后往前比大小比谁大谁大谁往后放// nums1Sizenums1数组的长度 // nums2Sizenums2数组的长度 void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) { int l1 m - 1; int l2 n - 1; int l3 m n - 1; while (l1 0 l2 0)// 只要有一个条件为假就跳出循环 { if (nums1[l1] nums2[l2]) { nums1[l3--] nums2[l2--]; } else { nums1[l3--] nums1[l1--]; } } // 出了循环有两种情况l1 0 或者 l2 0 // 只需要处理一种情况l2 0说明l2中的数据还没有完全放入到nums1中 while (l2 0) { nums1[l3--] nums2[l2--]; } // 此时nums1数组符合要求 }