国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

lintcode-簡單-落單的數

2019-11-08 03:07:09
字體:
來源:轉載
供稿:網友

描述:給出2*n + 1 個的數字,除其中一個數字之外其他每個數字均出現兩次,找到這個數字。

樣例:給出 [1,2,2,1,3,4,3],返回 4

挑戰:一次遍歷,常數級的額外空間復雜度(自主選擇)

思路:(1)先不考慮挑戰,自己看著寫出的代碼計算速度很慢也有很多優化的地方。但是畢竟是自己一點沒有參考寫出來的,希望自己能一點點進步吧。

(2)把數組中的數排序(從小到大)

(3)這種落單只有三種情況:

A.     1,1,2   這時最后兩個數不相等   即A[A.length-1]!=A[A.length-2] 時,落單就是最后一個數

B.     1,,2,2  這時數列最前邊兩個數不相等,  即A[0]!=A[1]時,落單就是第一個數

C.     1,1,2,3,3   這時落單的數在中間,和左右兩個數不相等   即這時的判斷條件為:A[i]!=A[i+1]&&A[i]!=A[i-1]  落單的數就是A[i]

AC代碼:

public class Solution {    /**      *@param A : an integer array      *return : a integer       */    public int singleNumber(int[] A) {        // Write your code here        int result=0;        if(A.length==0)        {            return result;        }        if(A.length==1)        {            return A[0];        }        for(int i=0;i<A.length-1;i++){            for(int j=i+1;j<A.length;j++){                if(A[i]>A[j])                {                    int temp=A[i];                    A[i]=A[j];                    A[j]=temp;                }            }        }         if(A[0]!=A[1])         {             result=A[0];         }        if(A[A.length-1]!=A[A.length-2])         {             result=A[A.length-1];         }        for(int i=1;i<A.length-1;i++)        {            if(A[i]!=A[i+1]&&A[i]!=A[i-1])            {                result=A[i];                break;            }        }        return result;    }}優化算法后續上傳


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 普兰店市| 交城县| 玉门市| 东源县| 区。| 上饶市| 蚌埠市| 天长市| 噶尔县| 昭通市| 志丹县| 江都市| 突泉县| 江山市| 曲周县| 白朗县| 白城市| 昌江| 南丹县| 赤峰市| 绥芬河市| 石首市| 乌兰浩特市| 汽车| 辛集市| 分宜县| 珠海市| 恩施市| 贵定县| 岳池县| 潍坊市| 江源县| 义马市| 淄博市| 青冈县| 南平市| 淮南市| 黑山县| 北京市| 杭锦后旗| 奉贤区|