趣味演算法 返回不重複數的實現

2022-02-26 07:00:38 字數 575 閱讀 1367

如果乙個數字十進位制表達時,不存在連續兩位相同,則稱之為「不重複數」。例如,105、164和198都是「不重複數」,而11、100和122不是。

下面用乙個long型別( long型別數字a),實現返回大於a的最小「不重複數」。

1static

long

gnext(

longa)2

11long

tmp =0

;//存放臨時值

12for

(intj =

cnt-

1; j 

>=

0; j--)

//迴圈取值

131920}

21if

(cnt 

>

2||tmp>90

)///

/輸入位數大於兩位執行

2230}31

}32return

tmp;33}

34static

long

getnext(

long

a)35

呼叫一下getnext(),很簡單,就不寫了。

主函式入口

演算法 隨機不重複數列生成

今天上班的時候網上看到題目很簡單,題目是這樣的 給定乙個正整數n,需要輸出乙個長度為n的陣列,陣列元素是隨機數,範圍為0 n 1,且元素不能重複。比如 n 3 時,需要獲取乙個長度為3的陣列,元素範圍為0 2 簡單的理解就是生成乙個無序的隨機數組,在路上想了一下回來用三種方式方式實現了一下 oc實現...

也談生成不重複數的演算法

剛剛看到有人寫生成不重複的隨機數的三種方法 正好在幾年前我也有過類似的要求,實現類似於雙色球隨機選號的功能,也就是在m個數中選取n個不重複的數 m n 0 下面我也談談我曾經用過的幾種做法,也算是對作者提出的方法的一種補充吧。一 利用contains 判斷法 思路是每次在制定範圍中隨機生成乙個隨機數...

今天的輸出不重複數

int a 10 bool ifcx 10 用於判斷數字是否出現過 int n 10 int ku new int n 用於存放出現過的數字 for int i 0 i 10 i 第一條給陣列變數賦值,第二條可不寫 全域性中的bool陣列變數初始為false for int i 0 ifor int...