【華為OD題庫-084】最長連續子序列-Java

題目

有N個正整數組成的一個序列。給定整數sum,求長度最長的連續子序列,使他們的和等于sum,返回此子序列的長度。如果沒有滿足要求的序列,返回-1。
輸入描述
第一行輸入是:N個正整數組成的一個序列
第二行輸入是:給定整數sum
輸出描述
最長的連續子序列的長度
備注
輸入序列僅由數字和英文逗號構成,數字之間采用英文逗號分隔。序列長度:1<=N<= 200
輸入序列不考慮異常情況
示例1:
輸入
1,2,3,4,2
6
輸出
3
說明
1,2,3和4,2兩個序列均能滿足要求,所以最長的連續序列為1,2,3,因此結果為3.
示例2:
輸入
1,2,3,4,2
20
輸出
-1
說明
沒有滿足要求的子序列,返回-1

思路

滑動窗口法,以示例數據為例:1 2 3 4 2,目標和targetSum為6
記i為窗口左邊界,j為窗口右邊界,輸入的數組為nums,初始和為curSum=nums[0]
如果curSum<targetSum,那么將j右移動,并更新當前curSum+=nums[++j],先右移再更新,可能越界
如果curSum==targetSum,那么記錄此時窗口的長度:j-i+1
如果curSum>targetSum,那么i右移,并更新當前curSum-=nums[i–],先更新再右移,不會越界
最后考慮窗口保證有效,i,j不得超過nums范圍,循環條件注意加上:i<=j,否則:1 2 3 4 2,目標和為0,無法通過。

題解

package hwod;import java.util.Arrays;
import java.util.Scanner;public class TheLongestContinueSubStr {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int[] nums = Arrays.stream(sc.nextLine().split(",")).mapToInt(Integer::parseInt).toArray();int sum = sc.nextInt();System.out.println(theLongestContinueSubStr(nums, sum));}private static int theLongestContinueSubStr(int[] nums, int sum) {int i = 0, j = 0, res = -1;int curSum = nums[0];while (i <= j && i < nums.length && j < nums.length) {if (curSum < sum) {j++;if (j < nums.length) curSum += nums[j];} else if (curSum >= sum) {if (curSum == sum) res = Math.max(res, j - i + 1);curSum -= nums[i];i++;}}return res;}
}

推薦

如果你對本系列的其他題目感興趣,可以參考華為OD機試真題及題解(JAVA),查看當前專欄更新的所有題目。

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

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

相關文章

nodejs fs模塊

是什么&#xff1a;nodejs提供的操作文件的模塊 fs.readFile() fs.writeFile() js中使用 fs模塊操作文件&#xff0c;先導入fs const fsrequire(fs)fs.readFile() 讀取指定文件的內容 語法格式 fs.readFile(path[, options], callback) path&#xff1a;必選參數&#x…

參數是Id,但要顯示接口中的id對應的名稱

當下拉數據是個接口&#xff0c;且后臺表單和列表中給的參數是Id,但要顯示接口中的id對應的名稱 先在data中定義要顯示的名稱 productName 1.form下拉 <el-form-item label"產品名稱" prop"productId"><el-select v-model"queryParams.produ…

初學vue3與ts:keep-alive的簡單使用

vue2用法 <keep-alive :include"keepAliveNames"><router-view></router-view> </keep-alive> <script>//include代表緩存name是FleetList的組件this.keepAliveNames FleetList </script>vue3用法 <router-view v-slot&qu…

數組循環:使用 for-of 循環

首先我們先創建一個數組&#xff0c;從之前的對象中取得 const menu [...restaurant.starterMenu,...restaurant.mainMenu];在之前&#xff0c;我們如果想要打印數組中的每一個數據&#xff0c;我們通常會寫for循環來一個一個打印出來&#xff0c;現在我們可以使用for-of循環…

Elasticsearch:什么是檢索增強生成 (RAG)?

檢索增強生成 (RAG) 定義 檢索增強生成 (RAG) 是一種利用來自私有或專有數據源的信息來補充文本生成的技術。 它將旨在搜索大型數據集或知識庫的檢索模型與大型語言模型 (LLM) 等生成模型相結合&#xff0c;后者獲取該信息并生成可讀的文本響應。 檢索增強生成可以通過添加來…

在線客服系統有哪些接入方式?

在線客服系統在當今的商業環境中還是非常重要的角色的。它通過提供實時又個性化的客戶服務&#xff0c;讓客戶滿意的同時還能提高轉化率&#xff0c;更能維護品牌形象。然而企業在選擇在線客服系統時必須了解不同的接入方式&#xff0c;以便選擇最適合自己的方式。下面我以合從…

消費升級:無人零售的崛起與優勢

消費升級&#xff1a;無人零售的崛起與優勢 隨著人們生活水平的提高&#xff0c;消費內容正在從生存型消費轉向以精神體驗和享樂為主的發展型消費。社會居民的消費結構不斷變遷&#xff0c;明顯呈現消費升級趨勢。個性化和多元化消費勢頭正在崛起&#xff0c;特別是無人零售的自…

【教學類-35-02】20231207大班姓名描字帖:A4單面3*10個姓名,雙面共60個名字

背景需求&#xff1a; 需求1——需要字帖 大4班班主任說&#xff1a;你能給我們班孩子做一套寫名字的字帖嗎&#xff1f;我想讓他們練習寫名字。 我說&#xff1a;沒問題。我找找已經有的樣式給你看看&#xff0c;再打印。 打開電腦&#xff0c;我把曾經做的一套“大字貼”…

測試:API接口測試

API接口測試 API接口測試是確保應用程序編程接口&#xff08;API&#xff09;在開發過程中正確實現并滿足預定功能要求的過程。API是不同軟件之間交流的橋梁&#xff0c;負責數據的傳輸、交換和控制。進行API測試的目的是驗證API的功能、性能、安全性和兼容性。 API接口測試的…

【Linux系統化學習】進程地址空間 | 虛擬地址和物理地址的關系

個人主頁點擊直達&#xff1a;小白不是程序媛 Linux專欄&#xff1a;Linux系統化學習 代碼倉庫&#xff1a;Gitee 目錄 虛擬地址和物理地址 頁表 進程地址空間 進程地址空間存在的意義 虛擬地址和物理地址 我們在學習C/C的時候肯定都見過下面這張有關于內存分布的圖片&a…

SQL Server 數據庫,多表查詢

4.2使用T-SQL實現多表查詢 前面講述過的所有查詢都是基于單個數據庫表的查詢&#xff0c;如果一個查詢需要對多個表進行操作&#xff0c; 就稱為聯接查詢&#xff0c;聯接查詢的結果集或結果稱為表之間的聯接。 聯接查詢實際上是通過各個表之間共同列的關聯性來查詢數據的&…

微信小程序 bindtap 事件多參數傳遞

在微信小程序中&#xff0c;我們無法直接通過 bindtap"handleClick(1,2,3)" 的方式傳遞參數&#xff0c;而是需要通過自定義屬性 data- 的方式進行傳遞&#xff0c;并在事件回調函數中通過 event.currentTarget.dataset 來獲取這些參數。然而&#xff0c;這種傳參方式…

跨框架解決方案-Mitosis【Context】

Context Mitosis的context必須是&#xff1a; 在自己的文件中創建文件名必須以context.lite.ts結尾默認導出必須是一個返回context對象的函數 // simple.context.lite.ts import { createContext } from builder.io/mitosis;export default createContext({foo: bar,get foo…

速查!軟考出成績了

2023年11月軟考成績出來啦&#xff01;大家趕緊查一下&#xff0c;各科都45分就是通過&#xff01; 01 如何查成績 1、打開“中國計算機技術職業資格網”&#xff0c;網址&#xff1a;https://www.ruankao.org.cn/ 2、點擊↘的“成績查詢”按鈕。 3、輸入“手機號/證件號密碼驗…

光伏儲能IC

光伏儲能IC 電子元器件百科 文章目錄 光伏儲能IC前言一、光伏儲能IC是什么二、光伏儲能IC的類別三、光伏儲能IC的應用實例四、光伏儲能IC的作用原理總結前言 光伏儲能IC可以提高光伏發電和儲能系統的效率和穩定性,同時提供智能化的管理和控制功能。它在光伏發電和儲能領域具有…

船舶機電設備智能故障診斷系統

1 船舶電氣設備故障診斷專家系統 體系結構 整個系統的體系結構采用瀏覽器&#xff0f; 服務器 &#xff08;B&#xff0f; S&#xff09; 三層體系結構 &#xff08; 如圖 1 所示 &#xff09;。B&#xff0f;S 模式是一種 以 Web 技術為基礎的系統平臺模式 。 把傳統…

【GEE】時間序列多源遙感數據隨機森林回歸預測|反演|驗證|散點圖|完整代碼

實驗介紹 分類和回歸之間的主要區別在于&#xff0c;在分類中&#xff0c;我們的預測目標是離散的類別&#xff0c;而在回歸中&#xff0c;預測目標是連續的預測值。 本實驗的研究區域位于佛蒙特州的埃塞克斯郡&#xff0c;使用訓練數據來模擬土壤氧化還原深度&#xff0c;然…

Codeforces Round 851 (Div. 2 D:枚舉+組合 Edp)

A - One and Two 相當于找第一個位置前后2的個數相同 #include<bits/stdc.h> using namespace std; const int N 1e610,mod998244353; #define int long long typedef long long LL; typedef pair<int, int> PII; const long long inf1e17; int n,m,k; int a[N]…

有哪些值得分享的銷售拓客技巧?

拓客對于銷售的重要性 拓客&#xff08;Toker&#xff09;是一個商業上的名詞&#xff0c;核心就是提高售前服務、市場推廣的水平&#xff0c;從而挖掘出潛在客戶的隱形需求&#xff08;或稱軟需求&#xff09;。 拓客的核心&#xff0c;其實就是提高售前服務、市場推廣的水平…

如何部署自己的服務渲染頁面為Pdf文檔

前言 相信大家都覺得官方發布的文檔生成模塊https://docs.mendix.com/appstore/modules/document-generation/很有用&#xff0c;它能把Mendix頁面像素級導出到Pdf文件中&#xff0c;這對于歸檔等業務非常有價值。但部署依賴公有云提供的渲染服務&#xff0c;而中國本土用戶對…