1.线性表
1.1 线性表
线性表就是具有相同特征数据元素的一个有限序列。
1.2 数组存储元素的初始化
数组初始化时必须对从前向后的连续空间初始化,不可以出现空缺的情况。写 0 也是初始化,也要从前向后写。
2.热身-单调数组
判断是否为单调数组:
public boolean isMonotonic(int[] nums) {boolean inc = true, dec = true;int n = nums.length;for (int i = 0; i < n - i; i++) {if (nums[i] > nums[i + 1]) {inc = false;}if (nums[i] < nums[i + 1]) {dec = false;}}return inc || dec;
}
给定一个排序数组和一个目标值,在数组中找到目标值并返回索引,不存在就返回按顺序插入的位置:
(凡是在单调序列中查找的情况,都应该考虑是否能用二分查找提高效率)
public int searchInsert(int[] nums, int target) {int n = nums.length;int left = 0, right = n - 1, ans = n;while (left <= right) {int mid = ((right - left) >> 1) + left;if (target <= nums[mid]) {ans = mid;right = mid - 1;} else {left = mid + 1;}}return ans;
}
3.热身-数组合并
有序数组合并:
// 找到最大的数,放到nums1的最后边
public void merge(int[] nums1, int nums1_len, int[] nums2, int num2_len) {int i = nums1_len + nums2_len - 1;int len1 = nums1_len - 1, len2 = nums2_len - 1;while (len1 >= 0 && len2 >= 0) {if (nums1[len1] <= nums[len2]) {nums1[i--] = nums2[len2--];} else if (nums1[len1] > nums2[len2]) {nums1[i--] = nums1[len1--];}}while (len2 != -1) {nums1[i--] = nums2[len2--];}while (len1 != -1) {nums1[i--] = nums1[len1--];}
}
如果对您有帮助,请点赞关注支持我,谢谢!❤
如有错误或者不足之处,敬请指正!❤