對長度為N的陣列,值大小為(1, N)且無重複數字的陣列進行排序
迴圈遍歷陣列,判斷arr[i] == i + 1,是否成立。若不成立,則交換 arr[i] 和arr[arr[i] - 1];若成立,則繼續遍歷下一個
public void swap(int[] arr, int i, int j){
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
public int[] sort(int[] arr){
if (arr.length <= 1){
return arr;
}
for (int i = 0; i < arr.length; ){
if (arr[i] != i + 1){
swap(arr, i, arr[i] - 1);
}else {
i++;
}
}
return arr;
}
時間複雜度O(n),空間複雜度O(1)
相關推薦
對長度為N的陣列,值大小為(1, N)且無重複數字的陣列進行排序
迴圈遍歷陣列,判斷arr[i] == i + 1,是否成立。若不成立,則交換 arr[i] 和arr[arr[i] - 1];若成立,則繼續遍歷下一個 public void swap(int[] arr, int i, int j){
java常見的邏輯練習題有1234 四個數,能組成多少個不同且無重複數字的三位數 ,並且是多少?
題目:有1234 四個數,能組成多少個不同且無重複數字的三位數 ,並且是多少? 分析:首先題目要求的是組成三位數,所以我們可以先將所有的三位數拿出來,用for迴圈遍歷所有三位數,即: 第一步 for (int i = 100; i <= 999; i++)
演算法,有一個從1到正無窮的無限大數字陣列,每個數字佔1位,求第n位是幾
陣列是1,2,3,4,5,6,7,8,9,1,0,1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,2,0,........ 求第n位是幾。 我是用java實現的,解題過程中還研究了一下char轉int,Integer.parseInt(String,
java經典題丨有1、2、3、4四個數字,能組成多少個互不相同且無重複數字的三位數?都是多少?
組合成三個互不重複的數字,不難理解,其他的好辦,但是互不重複,就有點難度了,這個是解決本題思路的重點,程式碼如下: public static void main(String[] args) { int x=0,y=0,z=0,count=0; for(x=1;x<=4;
題目:有1、2、3、4個數字,能組成多少個互不相同且無重複數字的四位數?都是多少?
#include<stdio.h> int main() { int i,j,k,t=0,l; for(i=1;i<5;i++) for(j=1;j<5;j++) for(k=1;k<5;k++) for(l=1;l<5;l+
題目:有1、2、3、4個數字,能組成多少個互不相同且無重複數字的三位數?都是多少?
for迴圈的巢狀輸出即可,不要想太多。 public class Test11 { public static void main(String[] args) { int i,j,k,sum = 0; System.out.print("符合條件的數有:"
Python——有1、2、3、4個數字,能組成多少個互不相同且無重複數字的三位數?都是多少?
用python做一個簡單的數字題,希望多初學者帶來一點點幫助 第一種方式: 1 for x in range(1,5): 2 for y in range(1,5): 3 for z in range(1,5): 4 if (x!=y) and (y
1、2、4、9個數字,能組成多少個互不相同且無重複數字的三位數?都是多少?
1 int arr[] = { 1, 2, 4, 9 }; 2 for (int i = 0, num = 0; i < arr.length; i++) { 3 for (int j = 0; j < arr.length; j++) { 4
有1 2 3 4個數字,能組成多少個互不相同且無重複數字的三位數 都是多少
題目:有1、2、3、4個數字,能組成多少個互不相同且無重複數字的三位數?都是多少? 解:程式分
C語言——例項001 有1、2、3、4個數字,能組成多少個互不相同且無重複數字的三位數?都是多少?
/* Name: Copyright: Author: Date: 27/07/17 08:43 Description: 【程式1】題目:有1、2、3、4個數字,能組成多少個互
c語言:有1、2、3、4個數字,能組成多少個互不相同且無重複數字的三位數?打印出來?
有1、2、3、4個數字,能組成多少個互不相同且無重複數字的三位數?打印出來?解:程式:#include<stdio.h>int main(){int i, j, k;int count =
基礎演算法題(1)—— 題目:有1、2、3、4個數字,能組成多少個互不相同且無重複數字的四位數?
題目:有1、2、3、4個數字,能組成多少個互不相同且無重複數字的四位數? 分析題目,要求將1,2,3,4四個數字成各個位數不相同且無重複的四位數,可以寫四個for迴圈,每一個迴圈代表一個位數上的數字,即1——4,再定義一個int型的變數count,初始值為
題目四:給定一個數組,值可以為正、負和0,請返回累加和小於等於k的最長子陣列長度。 時間複雜度:O(n)
import java.util.HashMap; /** * * 3、給定一個數組,值可以為正、負和0,請返回累加和小於等於k的最長子陣列長度。 時間複雜度:O(n) * * 這裡需要分為兩步,第一步是獲取,以每個位置開頭最小和的長度。第二步,從0到N逐
題目三:給定一個數組,值可以為正、負和0,請返回累加和為給定值k的最長子陣列長度。
import java.util.HashMap; /** * * 2、給定一個數組,值可以為正、負和0,請返回累加和為給定值k的最長子陣列長度。 * 咱們可以反推,比如:1- 100,陣列和為1000. * 要求最長和為300的子陣列,我可以反著求第一
高維打低維?互聯網征信為這個目標,正努力解鎖N+1種打開姿勢
互聯網征信日前,央行公示了設立經營個人征信業務的機構許可信息公示表,百行征信有限公司(以下簡稱百行征信)為公示表中唯一機構。而芝麻信用管理有限公司、騰訊征信有限公司、深圳前海征信中心股份有限公司、鵬元征信有限公司、中誠信征信有限公司、考拉征信有限公司、中智誠征信有限公司、北京華道征信有限公司8家2015年首批
把兩個有序數組合併成一個有序陣列,演算法複雜度O(N)
/** * */ /** * @author jueying: * @version 建立時間:2018-10-22 下午01:32:44 * 類說明 */ /** * @author jueying * */ public class Test4 {
10*10的二維字元型陣列,陣列名為y,正反對角線上存的是‘*’,其餘 位置存的是‘#’
package arraytest; public class Array { public static void main(String args[]) { String y[][] = new String[10][10]; for(int i=0;i<y
JAVA基礎-6.二維陣列,值傳遞,面向物件
1:二維陣列(理解) (1)元素是一維陣列的陣列。 (2)格式: A:資料型別[][] 陣列名 = new 資料型別[m][n]; m:表示這個二維陣列有多少個一維陣列。 n:表示每一個一維陣列的元素有多少個。
java IO:取得檔案或目錄資訊(是否為檔案/目錄,檔案大小,最後修改日期)
public class TestDemo3 { public static void main(String[] args) { File file=new File("h:"+File.separator+"my.exe"); if
解決問題win10“.dll(或者,ocx)控制元件已載入,但對DllregisterServer的呼叫失敗,錯誤程式碼為0x80070005”
重構機房的過程需要參考用VB生成的“機房收費系統”,安裝後需要執行的步驟: 第一:需要配置檔案DSN: 檔名稱:charge 伺服器:(local) 使用者名稱:sa 密碼:123456 資料庫:charge_sys 第二:附加資料庫 第三:需要註冊檔案“機房收費系統所需素材”中的3個控