隨機選擇陣列元素並刪除,直到刪完為止(java實現)
import java.util.Random; public class RandomSelect { public static void selAndDel(Object[] A){ int delNum = 0; Random rand = new Random(); rand.setSeed(System.currentTimeMillis()); while(delNum < A.length){ int i = rand.nextInt(A.length); if(A[i] != null){ A[i] = null; delNum++; } } } public static void main(String[] args){ Object[] A = {1,2,3,4,5,6,7,8,9}; selAndDel(A); printArray.printArrayint(A); } }
相關推薦
隨機選擇陣列元素並刪除,直到刪完為止(java實現)
import java.util.Random; public class RandomSelect { public static void selAndDel(Object[] A){ int delNum = 0; Random rand = ne
在單鏈表中刪除倒數第k個節點(java實現)
實現方式很多,在這裡只說兩種實現方式。看不懂時候,大家可以畫畫圖,對理解為什麼很有幫助。 第一種方式: 1.首先判斷K值和連結串列是否為空,如果k<=0,或連結串列為空,直接返回head; 2.滿足上面條件後,定義ListNode P=head,重頭
二叉樹的前序遍歷,中序遍歷,後序遍歷(Java實現)
1.前序遍歷 前序遍歷(DLR,lchild,data,rchild),是二叉樹遍歷的一種,也叫做先根遍歷、先序遍歷、前序周遊,可記做根左右。前序遍歷首先訪問根結點然後遍歷左子樹,最後遍歷右子樹。前序遍歷首先訪問根結點然後遍歷左子樹,最後遍歷右子樹。在遍歷左、右子樹時,
合併不同目錄下,相同檔案的內容(java實現)
場景如下: path1,path2為2個資料夾的目錄,目錄下有相同名的txt檔案,但內容不同,需要將不同目錄下,相同名字的檔案內容合併。 比如:在目錄path1下有檔案 a.txt,內容如下: 1 2 b.txt,內容如下: 6 7 在目錄path2下有檔案 a.txt
一個數如果恰好等於它的因子之和,這個數就稱為完數,編寫應用程式求1到1000的完數(java實現)
package vb;public class abcd { public static void main(String args[]){ int i,j; for(i=1;i<=1000;i++){ int sum=0; for(j=1;j<i;
按照字典排序,生成1-n佇列(java實現)
按照字典排序,就是按照從小大排序,包括序號中的每一個數字。 例如輸入3,字典排序就是 1,2,3, 1,3,2, 2,1,3, 2,3,1, 3,1,2, 3,2,1, 對於1,2,3和1,3,2來說,顯然除了第一個是1外,1後面也按照字典排序。 於是題目就是:輸入一個n(
java中對比陣列元素並刪除重複元素
package com.kyee.hrp_local.cost.dept_cost_reckon.base_config.human_manage.huaman_report.dao.impl; import java.util.ArrayList; import java
一個整數陣列中,有兩個元素只出現一次,其他所有元素均出現兩次。 找出只出現一次的那兩個元素。(java實現)
一個整數陣列中,有兩個元素只出現一次,其他所有元素均出現兩次。 找出只出現一次的那兩個元素。 思路大概是這樣的:因為除了這兩個只出現一次的數字外,其餘都是成對出現的,有一種運算子,異或運算,兩個相同的數字異或之後為0,所以將陣列中所有的數字依次異或,結果就是這個兩個支出現一
2019秋招筆試題——(數組合並)n個有序集合的並集,時間複雜度O(n^2)
這是一道下午剛剛筆試的題目,百詞斬的秋招演算法工程師題目中的一個。 題目: n個有序集合的合併,我最低的時間複雜度只能降到O(n^2),水平不夠,不能再優化了。 先說說我的思想: 輸入要求已經說明了,我必須要先儲存這n個集合,包括集合的長度以及元素,顯然是一個二維陣列,第一維
只含有0,1,2的陣列的排序(java實現)
要求對只含有0,1,2的陣列進行排序,時間複雜度為O(n),空間複雜度為1 秋招筆試題 /*思路: * 設定三個標記指標:iZero, iOne, iTwo * 令iZero從前往後遍歷,指向第一個
基於快排實現,在N個亂序的陣列中找第K大的數(Java實現)
類似於快速排序,執行一次快速排序之後,每次只選擇一部分繼續執行快速排序,直到找到第K大個元素為止,這個元素在陣列位置後面的元素即為所求。 時間複雜度:O(n) 利用快排的思想,從陣列arr中隨機找出一個元素X,把陣列分成兩部分arr_a和arr_b。 arr_a中的元素比x大,arr_b中的元素比x小。 這
將陣列元素迴圈右移k個位置(Java實現)
用四種方法實現了將陣列元素迴圈右移k個位置,相關的解釋作為註釋放在程式碼裡面了。 package movearrayelement; import java.util.BitSet; public class MoveArrayElement { /** * 每次
遞迴方法判斷陣列中的元素是否有序(Java實現)
import java.util.Scanner; class IsSort { public int isArrayInSortedOrder(int[] a, int index) { if (index == 1) {
循環鏈表的創建、插入、刪除、逆序、顯示(C++實現)
i++ pos str pre hide mar add 這樣的 itl 對於單鏈表,因為每一個結點僅僅存儲了向後的指針。到了尾標誌就停止了向後鏈的操作,這樣,其中某一結點就無法找到它的前驅結點了。 對於單鏈表的操作大家能夠看我的這篇博客http://
求較大整數n的階乘,因為n較大時n的階乘超出了正常類型的表示範圍,采用數組進行操作(java實現)
階乘 大數字package net.yk.mlgorithm; /** * 求較大數的階乘 * @author Administrator * * @param <T> */ public class ArraysMul<T> { public static void
LeetCode題目-- 刪除連結串列中的節點(python實現)
題目 請編寫一個函式,使其可以刪除某個連結串列中給定的(非末尾)節點,你將只被給定要求被刪除的節點。 現有一個連結串列 -- head = [4,5,1,9],它可以表示為: 4 -> 5 -> 1 -> 9 示例 1
對一些常見的排序演算法進行演算測試,對比效率。(JAVA 實現)
大三下了,正在找實習,把一些常用的排序演算法重新複習一遍,同時簡單的比較了一下各個演算法的效率,總的來說,快排效率最高,冒泡效率最低。-----具體的排序演算法包括:直接插入排序、折半插入排序、Shell排序(插入排序) 冒泡、快速排序(交換排序) 歡迎大家一起討論,如有錯誤務必指出
基礎算法系列之排序演算法-7.希爾排序 並解決hdu 1425問題(java實現)
我們從最初的氣泡排序演算法,到上篇文章的折半插入排序演算法,我們一共學習了5種排序演算法,相信以大家的聰明才智肯定都消化了^_^。在本篇文章中,我們又將學習第6種排序演算法——希爾排序演算法。那就讓我們直奔主題吧。 希爾排序 讓我們回想一下直接插入排序演算
劍指Offer刷題筆記(java實現)_39.陣列中次數超過一半的數字
陣列中有一個數字出現的次數超過陣列長度的一半,請找出這個數字。 例如輸入陣列:{1,3,3,2,3,2,3,3,2}。由於2在陣列中出現了5次,超過陣列長度的一半,因此要輸出2。 三種解法: 第一種遍歷陣列,利用hashMap儲存每個數字出現的次數,時間複雜度O(n)
常見連結串列操作-刪除連結串列倒數第n個節點(JAVA實現)
問題 給出一個單向連結串列,刪除該連結串列倒數第n個節點,並返回頭節點。 例如: 給出連結串列 1->2->3->4->5,n=2 返回連結串列 1->2->3->5 解題思路 最容易想到的演算法: 先遍歷一次連結串列,