国产探花免费观看_亚洲丰满少妇自慰呻吟_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;    }}優化算法后續上傳


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 青铜峡市| 普格县| 合江县| 象山县| 西充县| 清流县| 镇坪县| 砀山县| 石棉县| 蓝田县| 新竹市| 漾濞| 临泽县| 龙胜| 乌兰县| 成安县| 北川| 富民县| 梁平县| 遂平县| 休宁县| 台江县| 泰和县| 隆德县| 凤台县| 陇西县| 通许县| 同心县| 蛟河市| 崇左市| 抚宁县| 玛纳斯县| 汽车| 贞丰县| 佛坪县| 栾川县| 临颍县| 广宁县| 醴陵市| 增城市| 湖口县|