求數組中的最小子數組,時間復雜度o(n),java

?

石家莊鐵道大學    信1405-1 班   唐炳輝

?

題目:給定一個整數數組,找到一個具有最小和的子數組。返回其最小和。

?

?

設計思路:兩個變量 ,一個記錄當前并入的數組的值,另外一個記錄所算過得最大的數組的值,當并入的值為小于零的時候,就沒必要進行繼續的相加了,因為再加也不可能比后邊單獨的數字大,所以,為負數就重新刷新位置,重置子數組的長度重新去找一個新的子數組

?

 1 //石家莊鐵道大學    信1405-1 班   唐炳輝:三藏
 2 /**給定一個數組,求出這個數組中子數組的最大值,求出,要求時間復雜度為O(n)**/
 3  package java_ketang;
 4 import java.util.Scanner;
 5 
 6 
 7  
 8 public class MinArray {
 9 
10 
11 
12 public static void main(String[] args) {
13     MinArray f = new MinArray();
14         
15     //用戶自己定義數組的長度并 自行輸入一串數組
16         
17         Scanner in=new Scanner(System.in);
18         System.out.print("請輸入數組長度:");
19         int flase0g=in.nextInt();
20         //輸入數組中的各個數值
21         System.out.print("請依次輸入整數:");
22         int Arr[]=new int[flase0g];
23         for(int i=0;i<flase0g;i++)
24         {
25             Arr[i]=in.nextInt();
26         } 
27         //輸出用戶輸入的數組  
28         System.out.print("您輸入的數組為 ");
29         for(int i=0;i<flase0g;i++)
30         {
31             System.out.print(Arr[i]+"  ")  ;
32         }  
33         
34         //輸出最后的結果
35         f.findMaxArr(Arr);
36     }
37 
38     public void findMaxArr(int[] arr) {
39         int Arr = 0;//用來記錄當前并入的數組的和
40         int MaxArr = 0;//用來記錄之前的最大的數組和
41         int A = arr.length;
42         int Location1=0;
43         int Location2=0;//用來記錄子數組的最后一個位置
44         
45         int i;
46         
47 
48     /**核心算法,兩個變量 ,一個記錄當前并入的數組的值,另外一個記錄所算過得最大的數組的值
49         當并入的值為小于零的時候,就沒必要進行繼續的相加了,因為再加也不可能比后邊單獨
50         的數字大,所以,為負數就重新刷新位置,重置子數組的長度重新去找一個新的子數組**/
51         for ( i = 0; i < A; i++) {
52             Arr += arr[i];
53             if (Arr < 0) {
54                 Arr = 0;
55                 
56                 
57                 }
58             if (Arr > MaxArr) {
59                 MaxArr = Arr;
60                 Location2=i;
61                 ;
62                 }
63         }
64         
65         //用這個算法,通過最后的位置,和最大值來求出起始位置
66         for(i=Location2;i>=0;i--)
67         {
68             if(MaxArr-arr[i]==0)
69             {    
70                 Location1=i;//通過求出來的最大值和最后的那個位置,往前推移,找出起始位置
71                 break;//跳出循環
72             }
73             
74         }
75         /**這種情況的出現當且僅當全部的數字都為負數的時候,
76          對所有的數字求一個最大值就是最大子數組**/
77         if (MaxArr == 0) {
78             for ( i = 0; i < A; i++) {
79                 if (i == 0) {
80                     MaxArr = arr[i];
81                 }
82                 if (arr[i] > MaxArr) {
83                     MaxArr = arr[i];
84                 }
85             }
86         }
87         //***************
88         System.out.println("子數組的長度為"+(Location2-Location1+1));
89         System.out.println("子數組是由第    "+(Location1+1)+"   個數到第    "+(Location2+1)+"  個數組成");
90         System.out.println("最大子數組的和是   "+MaxArr);
91         
92     }
93 }

驗證截圖

轉載于:https://www.cnblogs.com/sanzangtdashi/p/5363435.html

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

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

相關文章

mysql 輸出解釋怎么看_了解MySQL中EXPLAIN解釋命令

1 EXPLAIN概念EXPLAIN會向我們提供一些MySQL是執行sql的信息&#xff1a;EXPLAIN可以解釋說明 SELECT, DELETE, INSERT, REPLACE, and UPDATE 等語句.當EXPLAIN與可解釋的語句一起使用時&#xff0c;mysql會顯示一些來自于優化器的關于sql執行計劃的信息。即mysql解釋它是如何處…

MYSQL數據庫默認latin1字符集轉換為GBK或UTF8

可以采用下面的方法latin1字符集轉換為gbk字符集或utf8字符集。具體的轉換步驟如下&#xff1a;一、latin1轉gbk1、導出數據庫mysqldump --default-character-setlatin1 -h 數據庫連接ip -u root -P 3306 -p數據庫密碼 db_name table_name > /usr/home/test/table_name.sql2…

【Post工具】PostMan 他媳婦 PostWoman

一個免費&#xff0c;快速&#xff0c;美觀的API請求構建器&#xff0c;可以替代 Postman。 測試網址&#xff1a; https://postwoman.io/ 下載地址 https://github.com/liyasthomas/postwoman 主要特性&#xff1a; 支持自定義換膚支持權限支持參數、請求體支持 PWA支持歷…

MYSQL統計和識別重復值

1、查詢和計算表person_tbl中&#xff08;last_name&#xff0c;first_name&#xff09;組合有重復的記錄的數量。mysql> SELECT COUNT (*) AS repetitions, last_name, first_nameFROM person_tbl GROUP BY last_name, first_nameHAVING repetitions > 1;2、從結果集中…

main spring啟動_SpringBoot學習(一):為什么main方法啟動類需要放在項目根目錄...

一、概述使用SpringBoot的應用是需要將應用代碼編譯打包成jar包&#xff0c;然后基于main方法的方式來獨立啟動這個應用&#xff0c;使得該應用作為一個獨立進程運行。這是跟傳統的將項目打包成war包&#xff0c;然后部署到tomcat服務器去運行的一個區別。而在應用當中&#xf…

學習筆記~~~~LinkedHashMap

LinkedHashMap實現了Map接口&#xff0c;繼承了HashMap 應用場景 HashMap是無序的&#xff0c;當我們希望有順序地去存儲key-value時&#xff0c;就需要使用LinkedHashMap了。 我們是按照7、2、3、4 的順序插入的&#xff0c;但是輸出結果并不是按照順序的。 同樣的數據&…

[轉]Mysql Join語法解析與性能分析

轉自&#xff1a;http://www.cnblogs.com/BeginMan/p/3754322.html 一&#xff0e;Join語法概述 join 用于多表中字段之間的聯系&#xff0c;語法如下&#xff1a; ... FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditiona table1:左表&#xff1b;table2:右表。 JOIN 按照…

css radial-gradient 徑向漸變基本語法與使用

在之前的文章《深入理解Css linear-gradient線性漸變》我們了解了CSS中的線性漸變&#xff0c;本文將介紹CSS中的另一種漸變———徑向漸變&#xff08;Radial Gradient&#xff09;&#xff1a; CSS中的徑向漸變&#xff08;Radial Gradient&#xff09;允許你創建從一個顏色…

華為鴻蒙系統技術細節盤點

面對安卓的限制&#xff0c;華為似乎十分淡定從容&#xff0c;絲毫都不慌&#xff0c;華為的底氣&#xff0c;很大原因來自華為自研的操作系統——鴻蒙系統&#xff01;鴻蒙系統剛提出來的時候就在各界媒體中炸開了花&#xff0c;花粉們對其關注程度也是只增不減&#xff0c;那…

spring boot2.x設置session有效時間_Spring 源碼解析 Scopes 之 Request 、Session 、Application...

(給ImportNew加星標&#xff0c;提高Java技能)轉自&#xff1a;開源中國&#xff0c;作者&#xff1a;麥克斯鏈接&#xff1a;my.oschina.net/wang5v/blog/3017934Request、Session、Application概念在這篇Spring源碼解析-Singleton Scope(單例)和Prototype Scope(多例)博客中介…

[SQLite]使用記錄

1. 自增列 1.1 隱藏的 rowid 1.2 顯式創建 ID INTEGER PRIMARY KEY AUTOINCREMENT 其中 ID 可以改變為實際列名 使用自增長字段&#xff0c;引擎會自動產生一個sqlite_sequence表 sqlite3_last_insert_rowid() 返回最后插入的ID 2. 下載 SQLite 時&#xff0c;要選擇 靜態的不…

學習筆記~~~~~TreeMap

TreeMap繼承了AbstractMap類&#xff0c;實現了NavigableMap、Cloneable、Serializable 接口 TreeMap也是一個很常用的map實現類&#xff0c;因為他具有一個很大的特點就是會對Key進行排序&#xff0c;使用了TreeMap存儲鍵值對&#xff0c;再使用iterator進行輸出時&#xff0c…

程序員別再迷茫,賺錢,方法比你想的更多

每次打開公號&#xff0c;撲面而來一陣陣焦慮&#xff1a;95后畢業3個月就買房&#xff0c;你的同齡人正在拋棄你畢業3年&#xff0c;年薪超100萬&#xff1a;賺錢&#xff0c;是一種修行一線城市財務自由門檻2.9億&#xff0c;看看你還差多少說來說去就是&#xff0c;牛人跑得…

Mac 創建本地Mysql_2018-09-25:mac下創建本地數據庫mysql

問題&#xff1a;如何在mac系統下&#xff0c;創建本地數據庫mysql&#xff1f;過程&#xff1a;1.安裝brew install mysql2.啟動mysql過程中遇到的問題&#xff1a;(1)ERROR 2002 (HY000): Cant connect to local MySQL server through socket /tmp/mysql.sock (2)解決過程&am…

.NET Core 學習資料精選:入門

開源跨平臺的.NET Core&#xff0c;還沒上車的趕緊的&#xff0c;來不及解釋了……本系列文章&#xff0c;主要分享一些.NET Core比較優秀的社區資料和微軟官方資料。我進行了知識點歸類&#xff0c;讓大家可以更清晰的學習.NET Core。首先感謝資料原作者的貢獻。第一篇&#x…

學習筆記~~~~~Set接口實現

Java中提供了HashSet、TreeSet、LinkedHashSet三種常用的Set實現&#xff0c;以下具體分析它們的用法和性能。 我們使用Set的原因是Set集合不包含重復元素&#xff0c;HashSet、TreeSet和LinkedHashSet三種類型什么時候使用它們&#xff0c;使用哪個這是一個很重要的選擇性問題…

15句喬布斯經典語錄(中英文)

1.Life is brief, and then you die, you know&#xff1f;人生短暫&#xff0c;過著過著你就沒了&#xff0c;明白么&#xff1f;2.Innovation distinguishes between a leader and a follower.領袖和跟風者的區別就在于創新。3.Were here to put a dent in the universe. Oth…

HashOperations

存儲格式&#xff1a;Key>(Map<HK,HV>) 1.put(H key, HK hashKey, HV value) putAll(H key, java.util.Map<? extends HK,? extends HV> m) 2.get(H key, java.lang.Object hashKey) multiGet(H key, java.util.Collection<HK> hashKeys) &#xff1…

mysql一些常用操作_mysql的一些常用操作(一)

1.啟動Mysql服務net start mysql2.進入mysql環境中&#xff0c;由于自己沒有設置密碼&#xff0c;直接回車進入即可(要將bin加入到環境變量path中)mysql -u root -p3.創建一個數據庫create database db_test default character set utf8 collate utf8_general_ci;顯示數據庫&am…

關于程序員的腦筋急轉彎(附答案)

1、程序猿最常去的是哪間酒吧&#xff1f;2、程序猿什么情況下會選擇離職&#xff1f;3、0是假&#xff0c;1是真&#xff0c;請問這是真還是假&#xff1f;4、你怎樣才能知道一個計算機科學家是內向還是外向的&#xff1f;5、為什么大部分Java程序員都是戴眼鏡的&#xff1f;6…