数组
链表
每个元素,一般都要定义一个class,两个成员变量(value、next)
T代表泛型
数组
Linklist链表
跳表
只可用于有序的情况
对标平衡树和二分查找。原始的有序序列添加多级索引,升维+空间换时间
二分查找,可以很快的查到一个有序的序列中某个数的存在
8大于1,往后走,到4,8大于4,到7,8大于7,继续往后走,直到8小于9,则又从7往下面走,开始找
时间复杂度
数组 :插入删除是o(n),lookup是o(1)
链表:插入,删除都是o(1),lookup是o(n)
跳表:插入,删除都是olog(n) lookup也是olog(n) ,空间复杂度O(n)
283移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:
必须在原数组上操作,不能拷贝额外的数组。
尽量减少操作次数。
class Solution {
public void moveZeroes(int[] nums) {
int j = 0;//记录下一个非零元素要放的位置
for(int i=0;i<nums.length;++i){
if(nums[i] != 0){
nums[j] = nums[i];//num[i]放到j所在的位置
if(i != j){
nums[i] = 0;
}
j++;//之前非零的元素已经放到j的位置了,j往,后面挪一遍
}
}
}
}