zoukankan      html  css  js  c++  java
  • leetcode26.删除排序数组中的重复项(双指针法,顺序表删除)

    public class LeetCode26 {
    public int Solution(int[] nums){
    //标记数据,匹配成功一次加1
    int x=0,y=0;
    for(int i=1;i<=nums.length;i++){
    if(nums[i-1]==nums[i]){
    for(int j=i;j<nums.length;j++){
    //顺序表删除基本操作
    nums[j-1]=nums[j];
    }
    //i--目的是用当前值继续匹配
    i--;
    x++;
    }
    y++;
    //如果当前值等于数组最后值,说明匹配结束
    if(nums[i]==nums[nums.length-1]&&y==nums.length-1){
    return nums.length-x;
    }
    }
    return nums.length-x;
    }

    public int delete(int[] nums){
    //leetcode极简解法,双指针法
    int i=0;
    for(int j=1;j<nums.length;j++){
    if(nums[j]!=nums[i]){
    //i++,使nums[j]值赋给nums[i]下一位
    i++;
    nums[i]=nums[j];
    }
    }
    //最终结果+1因为第一位未算
    return i+1;
    }

    public static void main(String args[]){
    int[] nums={1,1,2,2,3,3,3,4,4};
    LeetCode26 leetCode26=new LeetCode26();
    System.out.println(leetCode26.delete(nums));
    for (int i=0;i<nums.length;i++){
    System.out.println(nums[i]);
    }
    }
    }

    /**leetcode提交代码,原始无改动
    * public int Solution(int[] nums){
    * //标记数据,匹配成功一次加1
    * int x=0,y=0;
    * for(int i=1;i<nums.length;i++){
    * if(nums[i-1]==nums[i]){
    * for(int j=i;j<nums.length;j++){
    * //顺序表删除基本操作
    * nums[j-1]=nums[j];
    * }
    * i--;
    * x++;
    * }
    * y++;
    * //如果当前值等于数组最后值,说明匹配结束
    * if(nums[i]==nums[nums.length-1]&&y==nums.length-1){
    * return nums.length-x;
    * }
    * }
    * return nums.length-x;
    * }
    */
  • 相关阅读:
    有序数组中找中位数
    卡特兰数 catalan number
    海量数据等概率选取问题
    求字符串中最长无重复字符的子串
    Linux的进程通信(IPC)
    Linux多线程编程
    后缀数组处理字符串的利器
    网络编程socket基本API详解
    Windows线程的创建与终止
    《算法导论》读书笔记之第10章 基本数据结构之二叉树
  • 原文地址:https://www.cnblogs.com/shudaixiongbokeyuan/p/13369039.html
Copyright © 2011-2022 走看看