算法训练营+移动0

数组、链表、跳表

数组ArrayList 的特点:

  • 增删复杂度高、查询复杂度低

链表

  • 增删复杂度低、查询复杂度高

跳表

  • 采用升维的思想,用空间换时间,在原有数组的基础之上,加了一层二级、三级、N级索引;
  • redis数据库采用跳表实现。

主要优化思想:升维 + 空间换时间

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:
必须在原数组上操作,不能拷贝额外的数组。
尽量减少操作次数。
class Solution {
    public void moveZeroes(int[] nums) {
        if (nums.length==0||nums.length==1) return;
        int i=0;
        int j=0;
        int a;
        for(i=0;i

解析:移动0,有两个解释,

  • 从左向右,依次向后移动0
  • 从左向右,依次向前移动非0元素。非0元素与前面0进行交换

解析中 j 代表的依次存放非0元素的位置,j有两种结果 j = i ,j

你可能感兴趣的:(算法训练营+移动0)