數組基操三連(1)

題目:

? ? 給定一個數組arr,求出需要排序的最短子數組長度

要求:

? ? 時間o(n),空間o(1)

思路:

? ? 有序的數組中,任意一個數字,一定小于左邊的數大于右邊的數。

? ? 我們找到的需要排序的子數組,顯然是比右邊最小的值大,或比左邊最大的值小。

? ? 我們初始化變量noMinindex=-1;從右往左遍歷,記錄經過的最小值為min,若當前數大于min,說明,如果要有序,min一定要放? ? ? 在當前數左邊,我們更新noMinindex。

? ? 也就是說,我們的noMinindex是負責記錄最左邊出現這種情況的位置。我們反方向處理出noMaxindex

? ? 他們組成的區間就是最短需要排序的部分了

public class MinLengthForSort {public static int getMinLength(int[] arr) {if (arr == null || arr.length < 2) {return 0;}int min = arr[arr.length - 1];int noMinIndex = -1;for (int i = arr.length - 2; i != -1; i--) {if (arr[i] > min) {noMinIndex = i;} else {min = Math.min(min, arr[i]);}}if (noMinIndex == -1) {return 0;}int max = arr[0];int noMaxIndex = -1;for (int i = 1; i != arr.length; i++) {if (arr[i] < max) {noMaxIndex = i;} else {max = Math.max(max, arr[i]);}}return noMaxIndex - noMinIndex + 1;}public static void main(String[] args) {int[] arr = { 1, 2, 4, 7, 10, 11, 7, 12, 6, 7, 16, 18, 19 };System.out.println(getMinLength(arr));}}

?

題目:

? ? 給定一個數組,找出出現次數超過一半的數字

蠢思路:排序找中間

思路:

? ? DP:掃一遍一個變量count記錄解出現的次數,是當前解就++,否則--,count為負就換掉當前解。(解釋:想象解全都挨在? ? ? ? ?一起(前面),count先達到最大,然后減為1或0,而其他數字先出現,可能會使正確解的count減為負數,但都會使正確解? ? ? ? 在后面更多,從而保證了結束時肯定為正確解)

int main()
{int n;//個數scanf("%d",&n);int temp,k,count=0;while(n--){scanf("%d",&temp);if(temp==k)count++;else{count--;if(count<0){count=0;k=temp;}}}printf("%d\n",k);
}

?

?

題目:

給定一個有N×M的整型矩陣matrix和一個整數K,matrix的每一行和每一列都是排好序的。實現一個函數,判斷K是否在matrix中。

例如:

0???????1???????2???????5

2???????3???????4???????7

4???????4???????4???????8

5???????7???????7???????9

如果K為7,返回true,如果K為6,返回false

要求:

時間復雜度為O(N+M),額外空間復雜度為O(1)。

思路:

1.從矩陣最右上角的數開始尋找(row=0,col=M-1)。

2.比較當前數matrix[row][col]與K的關系:

如果與K相等,說明已找到,直接返回true

如果比K大,因為矩陣每一列都已排好序,所以在當前數所在的列中,處于當前數下方的數都會比K大,則沒有必要繼續在第col列上尋找,令col=col-1,重復步驟2.

如果比K小,因為矩陣每一行都已排好序,所以在當前數所在的行中,處于當前數左方的數都會比K小,則沒有必要繼續在第row行上尋找,令row=row+1,重復步驟2.

3.如果找到越界都沒有發現與K相等的數,則返回false。

或者可以從矩陣的最左下角的數開始尋找(row=N-1,col=0),具體過程類似。

代碼:
?

/*** 在行列都排好序的矩陣中找數*/
public class IsContains {public boolean isContains(int[][] matrix, int K) {int row = 0;int col = matrix[0].length - 1;while (row < matrix.length && col > -1) {if (matrix[row][col] == K) {return true;} else if (matrix[row][col] > K) {col--;} else {row++;}}return false;}
}

?

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

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

相關文章

IT互聯網公司的筆試的輸入輸出- c++ python

文章目錄目錄c方式1&#xff1a;方式2&#xff1a;Python方式1&#xff1a;方式2&#xff1a;方式3&#xff1a;目錄 c 方式1&#xff1a; 第一種情況&#xff1a;輸入n個數&#xff0c;存放在數組中 #include <iostream> #include <vector> using namespace st…

隨機過程1

隨機過程1概述1.參考書目2.主要內容3.概率論--基本概念回顧3.1對“不確定性”的認識3.2 應對“不確定性”應該怎么做3.3隨機變量&#xff08;Random Variable&#xff09;3.4分布函數&#xff08;Distribution Function&#xff09;3.5概率密度&#xff08;Density&#xff09;…

數組基操三連(4)

題目一 給定一個長度為N的整型數組arr&#xff0c;其中有N個互不相等的自然數1~N 請實現arr的排序 但是不要把下標0~N-1位置上的數值通過直接賦值的方式替換成1~N。 要求&#xff1a;時間復雜度為O(N)&#xff0c;額外空間復雜度為O(1)。 思路&#xff1a;從左向右檢查&…

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 線性空間的基與坐標 向量的坐…