數組基操三連(4)

題目一

給定一個長度為N的整型數組arr,其中有N個互不相等的自然數1~N

請實現arr的排序

但是不要把下標0~N-1位置上的數值通過直接賦值的方式替換成1~N。

要求:時間復雜度為O(N),額外空間復雜度為O(1)。

?

思路:從左向右檢查,檢查到需要換的以后,就直接把它放到該去的位置,然后被換掉的數,位置肯定也不對,繼續重復相同的方法,最后肯定會跳回來(原因懶得說了自己想想),然后繼續往下檢查即可。

public static void sort1(int[] arr) {int tmp = 0;int next = 0;for (int i = 0; i != arr.length; i++) {tmp = arr[i];while (arr[i] != i + 1) {next = arr[tmp - 1];arr[tmp - 1] = tmp;tmp = next;}}}

題目二

本題一般思路:依次查找找到比前后都小的數;或者選出最小數,他肯定是局部最小的;等等

但這些都是O(n)的方法,而用二分可以做到O(logn).

二分思路:

??考慮最左和最右的元素:如果arr[0]<arr[1] ?return?0; arr[N-1]<arr[N-2] return?N-1;

???考慮最中間元素,如果中間元素大于它左邊的元素,那么局部最小值就應該在數組的左半部分

???如果中間元素小于大于它右邊的元素,那么局部最小值就應該在數組的右半部分

???中間元素既小于它左邊的值又小于它右邊的值,那么它就是局部最小
?

題目三

?

給定一個整數數組arr,返回不包含本位置的累乘數組。

比如2 3 1 4返回12 8 24 6

方法一:算出所有數的乘積,每個位置除以自己即可。要注意坑:如果數組中有一個0,那么0這個位置就是其他數的乘積,其他位置全為0;如果有多個0,那么所有位置都是0.

	public int[] product1(int[] arr) {if(arr==null || arr.length<2) {return null;}int count=0;//0的個數int all=1;//除0以外的數的乘積for(int i=0;i!=arr.length;i++) {if(arr[i]!=0) {all*=arr[i];}else {count++;}}int[] res=new int[arr.length];if(count==0) {for(int i=0;i!=arr.length;i++) {res[i]=all/res[i];}}else if(count==1) {for(int i=0;i!=arr.length;i++) {if(arr[i]==0) {res[i]=all;}}}return res;}

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/445389.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/445389.shtml
英文地址,請注明出處:http://en.pswp.cn/news/445389.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux(1)-touch,mkdir,rm,mv,cp,ls,cd,cat

Linux1-實用終端命令1. touch, mkdir2. rm, mv, cp3. ls(通配符),cd(絕對/相對路徑)4. cat, more/less文件內容瀏覽文件/目錄-增刪查改, 文件內容查看.1. touch, mkdir touch新文件 &#xff1a;在當前文件夾下&#xff0c;創建文件。文件不存在則創建新文件&#xff1b;文件存…

java常用類介紹及源碼閱讀(ArrayList)

java.util 類 ArrayList<E> 繼承關系&#xff1a; java.lang.Objectjava.util.AbstractCollection<E>java.util.AbstractList<E>java.util.ArrayList<E>List 接口的動態數組的實現。 實現了所有可選列表操作&#xff0c;并允許包括 null 在內的所有…

tests1

ls,cd,tardone

數組精選題目三連(5)

子數組的最大累加和問題 輸入一個整形數組&#xff0c;求數組中連續的子數組使其和最大。比如&#xff0c;數組x 應該返回 x[2..6]的和187. 這四個代碼完成的功能都是求最大子數組&#xff08;注意用詞準確&#xff0c;子數組連續&#xff0c;子序列可以不連續&#xff09;。…

大數據學習(1)-大數據概述

文章目錄目錄大數據產生背景大數據概念大數據影響大數據應用大數據關鍵技術大數據產業大數據&#xff0c;云計算&#xff0c;物聯網關系云計算物聯網大數據&#xff0c;物聯網&#xff0c;云計算三者之間聯系目錄 大數據產生背景 三次信息化浪潮 根據IBM前首席執行官郭士納福…

java常用類介紹及源碼閱讀(LinkedList)

java.util 類 LinkedList<E> java.lang.Objectjava.util.AbstractCollection<E>java.util.AbstractList<E>java.util.AbstractSequentialList<E>java.util.LinkedList<E> List 接口的鏈接列表實現。實現所有可選的列表操作&#xff0c;并且允…

矩陣論-集合與映射,線性空間及其性質

線性空間與線性變換綜述1.1 線性空間1.1.1 集合與映射1.1.2 線性空間及其性質綜述 本系列博文主要總結學習矩陣論的心得筆記&#xff0c;參考數目《矩陣論》–張凱院&#xff1b;整個文章的整理體系參照行書過程。 1.1 線性空間 1.1.1 集合與映射 1.集合&#xff1a;將很多…

機器學習知識總結系列-機器學習中的數學-概率與數理統計(1-3-1)

文章目錄目錄1.概率與統計1.1 機器學習與概率統計之間的關系1.2 重要的統計量1.2.1 期望1.2.2 方差1.2.3 協方差&#xff0c;相關系數協方差相關系數1.2.4 矩1.3 重要的定理與不等式1.4 用樣本估計參數目錄 1.概率與統計 1.1 機器學習與概率統計之間的關系 1.什么是概率問題…

redis——事件

redis服務器是一個事件驅動程序。 需要處理兩類事件&#xff1a; 1&#xff09;文件事件&#xff1a;redis是通過套接字與客戶端或者其他服務器連接的&#xff0c;而文件事件就是服務器對套接字操作的抽象。 2&#xff09;時間事件&#xff1a;服務器對一些定時操作的抽象。…

自然語言處理(1)-概述

自然語言處理-概述概述1.基本概念2.人類語言技術HLT發展簡史3.HLT 研究內容4.基本問題和主要困難5.基本研究方法概述 本系列文章計劃總結整理中國科學院大學宗成慶老師《自然語言處理》課程相關知識&#xff0c;參考數目《統計自然語言處理》-第二版&#xff0c;宗成慶。 1.基…

redis——客戶端

redis服務器是典型的一對多服務器&#xff0c;通過使用由IO多路復用技術實現的文件事件處理器&#xff0c;redis服務器使用了單線程單進程的方式來處理請求。 客戶端的屬性 描述符 客戶端狀態的 fd 屬性記錄了客戶端正在使用的套接字描述符&#xff1a; typedef struct red…

矩陣論-線性空間的基與坐標,基變換坐標變換

線性空間與線性變換綜述1.1 線性空間1.1.3 線性空間的基與坐標1.1.4 基變換與坐標變換綜述 本系列博文主要總結學習矩陣論的心得筆記&#xff0c;參考數目《矩陣論》–張凱院&#xff1b;整個文章的整理體系參照行書過程。 1.1 線性空間 1.1.3 線性空間的基與坐標 向量的坐…

大數據學習(2-1)-Hadoop安裝教程-單機模式和偽分布模式(Ubuntu14.04LTS)

文章目錄目錄1.linxu的安裝1.1安裝Linux虛擬機1.2安裝Linux和Windows雙系統2.Hadoop的安裝2.1 Hadoop安裝前配置2.1.1 配置Hadoop用戶2.1.2 安裝 ssh , 配置ssh免密登錄2.1.3 安裝java環境2.2 Hadoop的安裝3.Hadoop單機版配置4.Hadoop偽分布版配置目錄 1.linxu的安裝 1.1安裝…

mysql——JDBC

概述 JDBC&#xff1a;java Data Base Connectivity ,java數據庫連接&#xff0c;它是一種用于執行sql語句的java API&#xff0c;為多種關系數據庫提供統一訪問。 其實就是一組用java編寫的類和接口。 JDBC API 提供兩類主要接口&#xff1a; 1&#xff09;面向開發人員的…

數組精選題目三連(6)

題目一&#xff1a;調整有序的arr數組&#xff0c;使得左半部分有序且不重復&#xff0c;不用保證右邊是否有序。 思路&#xff1a; u : 左邊的最后位置&#xff0c;即0---u為答案 i : 從u到右遍歷 當arr[i]和arr[u]不相等時&#…

大數據學習(2-2)- 使用docker安裝配置Hadoop環境

我的思路是這樣&#xff1a;安裝ubuntu系統---->下載docker---->在docker里拉取hadoop鏡像---->在此鏡像里創建三個容器(Master、Slave1、Slave2)---->完成完全分布式 1. 安裝ubuntu系統(無論你是安裝的單系統&#xff0c;還是用虛擬機安裝了ubuntu) 如果想安裝單…

自然語言處理(2)-信息論基礎

自然語言處理-數學基礎概述1.信息論基礎1.1熵1.2 聯合熵和條件熵1.3 相對熵和交叉熵1.4 互信息和雙字耦合度1.5 噪聲信道模型概述 本系列文章計劃總結整理中國科學院大學宗成慶老師《自然語言處理》課程相關知識&#xff0c;參考數目《統計自然語言處理》-第二版&#xff0c;宗…