zoukankan      html  css  js  c++  java
  • 268. Missing Number

    Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one that is missing from the array.

    Example 1

    Input: [3,0,1]
    Output: 2
    
    

    Example 2

    Input: [9,6,4,2,3,5,7,0,1]
    Output: 8
    

    我的版本:

    package leetCode;
    
    import java.util.Arrays;
    
    /**
     * Created by luoluo on 2018/1/27.
     	先进行快排,然后在判断
     */
    public class MissingNumber {
    
        public static void main(String[] args) {
            int[] a = {3,0,1};
            missingNumber(a);
            System.out.println(Arrays.toString(a));
        }
    
        public static int missingNumber(int[] nums) {
            int n = nums.length;
    
            sort(nums, 0, n-1);
    
            if(nums[0] != n ){
                return n;
            }else if(nums[nums.length-1] !=0){
                return 0;
            }
            for (int i = 0; i < nums.length-1; i++) {
                if(nums[i]-nums[i+1]!=1){
                    return nums[i]-1;
                }
            }
            return 0;
        }
    
        public static void sort(int[] nums ,int bg,int end){
            if (bg >= end) {
                return;
            }
            int partition = partition(nums, bg, end);
            sort(nums, bg, partition - 1);
            sort(nums, partition + 1, end);
        }
    
        public static int partition(int[] nums,int bg, int end){
            int l = nums[bg];
    
            int j = bg;
            for (int i = bg+1; i <= end; i++) {
                if(nums[i]>l){
                    j++;
                    swap(nums, i, j);
                }
            }
            swap(nums, j, bg);
            return j;
        }
    
        public static void swap(int[] nums ,int a ,int b) {
            int temp = nums[a];
            nums[a] = nums[b];
            nums[b] = temp;
        }
    }
    
    

    大神的版本:

    public static int missingNumber(int[] nums) {
        int sum = nums.length;
        for (int i = 0; i < nums.length; i++)
            sum += i - nums[i];
        return sum;
    }
    
  • 相关阅读:
    Mediawiki 子页链接无效的问题
    变量存储区:堆和栈
    《modern-php》
    HttpApplication处理对象与HttpModule处理模块
    Asp.Net构架(Http请求处理流程)
    Quartz.NET 3.0
    WebApi路由
    RESTful架构
    WCF
    TCP/IP协议
  • 原文地址:https://www.cnblogs.com/luozhiyun/p/8367149.html
Copyright © 2011-2022 走看看