【雙指針題目】

雙指針

  • 美麗區間(滑動窗口)
  • 合并數列(雙指針的應用)
  • 等腰三角形
  • 全部所有的子序列

美麗區間(滑動窗口)

美麗區間
在這里插入圖片描述

滑動窗口模板:

int left = 0, right = 0;while (right < nums.size()) {// 增大窗口window.addLast(nums[right]);right++;while (window needs shrink) {// 縮小窗口window.removeFirst(nums[left]);left++;//....更新}
}
import java.util.Scanner;
// 1:無需package
// 2: 類名必須Main, 不可修改public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);//在此輸入您的代碼...int slow=0,fast=0;int min=(int)1e5+1;//最小區間int n=scan.nextInt();int S=scan.nextInt();int[]arr=new int[n];for(int i=0;i<n;i++){arr[i]=scan.nextInt();}int sum=0;//區間中的和//fast 有解,slow 最優解while(fast< n){sum+=arr[fast];//擴大區間[slow,fast),更新sumfast++;               while(sum-arr[slow]>=S){sum-=arr[slow];//縮小區間[slow,fast),更新sumslow++;//跟新minif(min>(fast-slow)){min=fast-slow;}}            }if(min==(int)1e5+1) {System.out.println(0);}else {System.out.println(min);}}
}

合并數列(雙指針的應用)

合并數列
在這里插入圖片描述

import java.util.Scanner;
// 1:無需package
// 2: 類名必須Main, 不可修改
import java.util.ArrayList;
public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);//在此輸入您的代碼...int n=scan.nextInt();int m=scan.nextInt();ArrayList<Integer>arr1=new ArrayList<Integer>();for(int i=0;i<n;i++){arr1.add(scan.nextInt());}ArrayList<Integer>arr2=new ArrayList<Integer>();for(int i=0;i<m;i++){arr2.add(scan.nextInt());}int l1=0,l2=0;int count=0;while(l1<arr1.size()&&l2<arr2.size()){if(arr1.get(l1)<arr2.get(l2)){//合并arr1中的l1,l1+1arr1.set(l1, arr1.get(l1)+arr1.remove(l1+1));count++;}else if(arr1.get(l1)>arr2.get(l2)) {//合并arr2中的l2和l2+1arr2.set(l2, arr2.get(l2)+arr2.remove(l2+1));count++;}else {l1++;l2++;}}System.out.println(count);scan.close();}
}

等腰三角形

在這里插入圖片描述

import java.util.Scanner;
// 1:無需package
// 2: 類名必須Main, 不可修改
import java.util.ArrayList;
import java.util.Collections;
public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);//在此輸入您的代碼...int N=scan.nextInt();ArrayList<Integer> list1=new ArrayList<Integer>();for(int i=0;i<N;i++) {list1.add(scan.nextInt());}ArrayList<Integer> list2=new ArrayList<Integer>();for(int i=0;i<N;i++) {list2.add(scan.nextInt());}Collections.sort(list1);Collections.sort(list2);int j=0;int count=0;//兩個指針指向兩個數組,根據兩邊(腰)之和大于第三邊(底)for(int i=0;i<N;i++) {if(list1.get(i)*2>list2.get(j)) {j++;count++;}}System.out.println(count);scan.close();}}

全部所有的子序列

全部所有的子序列

在這里插入圖片描述

import java.util.Scanner;
// 1:無需package
// 2: 類名必須Main, 不可修改import java.util.HashMap;
import java.util.HashSet;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);//在此輸入您的代碼...int n=scan.nextInt();int[]arr=new int[n];HashSet<Integer> set=new HashSet<Integer>();for(int i=0;i<n;i++) {arr[i]=scan.nextInt();set.add(arr[i]);}int size=set.size();int len=(int)1e5;int l=0,r=0;//[)HashMap<Integer,Integer> window =new HashMap<Integer,Integer>();while(r<n) {//擴大窗口window.put(arr[r],window.getOrDefault(arr[r], 0)+1);r++;while(window.size()==size) {if(window.get(arr[l])==1){break;}//可以縮小window.put(arr[l],window.get(arr[l])-1);l++;//更新if(len>r-l){len=r-l;}}}if(len==100000){//注意:當序列為1 2 3 4 5 時,len=100000System.out.println(n);}else{System.out.println(len);}scan.close();}
}

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

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

相關文章

為什么命令“echo -e “\033[9;0]“ > /dev/tty0“能控制開發板上的LCD不熄屏?

為什么命令"echo -e “\033[9;0]” > /dev/tty0"能控制開發板上的LCD不熄屏&#xff1f; 在回答這個問題前請先閱讀我之前寫的與tty和終端有關的博文 https://blog.csdn.net/wenhao_ir/article/details/145431655 然后再來看這條命令的解釋就要容易些了。 這條…

嵌入式八股文面試題(一)C語言部分

1. 變量/函數的聲明和定義的區別&#xff1f; &#xff08;1&#xff09;變量 定義不僅告知編譯器變量的類型和名字&#xff0c;還會分配內存空間。 int x 10; // 定義并初始化x int x; //同樣是定義 聲明只是告訴編譯器變量的名字和類型&#xff0c;但并不為它分配內存空間…

go-zero學習筆記(三)

利用goctl生成rpc服務 編寫proto文件 // 聲明 proto 使用的語法版本 syntax "proto3";// proto 包名 package demoRpc;// golang 包名(可選) option go_package "./demo";// 如需為 .proto 文件添加注釋&#xff0c;請使用 C/C 樣式的 // 和 /* ... */…

Javascript代碼庫-jQuery入門

摘自千鋒教育kerwin的js教程 jQuery 是一個前端庫&#xff0c;也是一個方法庫他里面封裝著一些列的方法供我們使用我們常用的一些方法它里面都有&#xff0c;我們可以直接拿來使用就行了jQuery 之所以好用&#xff0c;很多人愿意使用&#xff0c;是因為他的幾個優點太強大了 優…

【25考研】南開軟件考研復試復習重點!

一、復試內容 復試采取現場復試的方式。復試分為筆試、機試和面試三部分。三部分合計100分&#xff0c;其中筆試成績占30%、機試成績占30%、面試成績占40%。 1.筆試&#xff1a;專業綜合基礎測試 考核方式&#xff1a;閉卷考試&#xff0c;時長為90分鐘。 筆試考查內容范圍…

【最長上升子序列Ⅱ——樹狀數組,二分+DP,純DP】

題目 代碼&#xff08;只給出樹狀數組的&#xff09; #include <bits/stdc.h> using namespace std; const int N 1e510; int n, m; int a[N], b[N], f[N], tr[N]; //f[i]表示以a[i]為尾的LIS的最大長度 void init() {sort(b1, bn1);m unique(b1, bn1) - b - 1;for(in…

012-51單片機CLD1602顯示萬年歷+鬧鐘+農歷+整點報時

1. 硬件設計 硬件是我自己設計的一個通用的51單片機開發平臺&#xff0c;可以根據需要自行焊接模塊&#xff0c;這是用立創EDA畫的一個雙層PCB板&#xff0c;所以模塊都是插針式&#xff0c;不是表貼的。電路原理圖在文末的鏈接里&#xff0c;PCB圖暫時不選擇開源。 B站上傳的…

容器迭代器iterator

文章目錄 1、自定義String實現iterator2、自定義vector實現iterator3、迭代器失效問題 迭代器的功能&#xff1a;提供一種統一的方式&#xff0c;來透明的遍歷容器。 迭代器可以透明的訪問容器內部的元素的值&#xff0c;而無需了解其底層遍歷機制具體是數組的下標還是鏈表的指…

對象的實例化、內存布局與訪問定位

一、創建對象的方式 二、創建對象的步驟: 一、判斷對象對應的類是否加載、鏈接、初始化: 虛擬機遇到一條new指令&#xff0c;首先去檢查這個指令的參數能否在Metaspace的常量池中定位到一個類的符號引用&#xff0c;并且檢查這個符號引用代表的類是否已經被加載、解析和初始化…

傳輸層協議 UDP 與 TCP

&#x1f308; 個人主頁&#xff1a;Zfox_ &#x1f525; 系列專欄&#xff1a;Linux 目錄 一&#xff1a;&#x1f525; 前置復盤&#x1f98b; 傳輸層&#x1f98b; 再談端口號&#x1f98b; 端口號范圍劃分&#x1f98b; 認識知名端口號 (Well-Know Port Number) 二&#xf…

實驗十一 Servlet(二)

實驗十一 Servlet(二) 【實驗目的】 1&#xff0e;了解Servlet運行原理 2&#xff0e;掌握Servlet實現方式 【實驗內容】 改造實驗10&#xff0c;引入數據庫&#xff0c;創建用戶表&#xff0c;包括用戶名和密碼&#xff1a;客戶端通過login.jsp發出登錄請求&#xff0c;請求…

服務SDK三方新版中央倉庫和私服發布詳解

預備信息Github倉庫發布Gradle版本匹配Gradle項目構建全局變量定義Gradle項目Nexus倉庫配置與發布過程Gradle項目發布至Sonatype中央倉庫配置過程總結當我們在實現一個項目技術總結、工具類封裝或SDK封裝,通常是為了方便開發者使用特定服務或平臺而提供的一組工具和API。您可能…

git 新項目

新項目git 新建的項目如何進行git 配置git git config --global user.name "cc" git config --global user.email ccexample.com配置遠程倉庫路徑 // 添加 git remote add origin http://gogs/cc/mc.git //如果配錯了&#xff0c;刪除 git remote remove origin初…

openmv的端口被拆分為兩個 導致電腦無法訪問openmv文件系統解決辦法 openmv USB功能改動 openmv驅動被更改如何修復

我之前誤打誤撞遇到一次&#xff0c;直接把openmv的全部端口刪除卸載然后重新插上就會自動重新裝上一個openmv端口修復成功&#xff0c;大家可以先試試不行再用下面的方法 全部卸載再重新插拔openmv 要解決OpenMV IDE中出現的兩個端口問題&#xff0c;可以嘗試以下步驟&#x…

利用Python高效處理大規模詞匯數據

在本篇博客中&#xff0c;我們將探討如何使用Python及其強大的庫來處理和分析大規模的詞匯數據。我們將介紹如何從多個.pkl文件中讀取數據&#xff0c;并應用一系列算法來篩選和擴展一個核心詞匯列表。這個過程涉及到使用Pandas、Polars以及tqdm等庫來實現高效的數據處理。 引…

LabVIEW雙光子成像系統:自主創新,精準成像,賦能科研

雙光子成像系統&#xff1a;自主創新&#xff0c;精準成像&#xff0c;賦能科研 第一部分&#xff1a;概述 雙光子成像利用兩個低能量光子同時激發熒光分子&#xff0c;具有深層穿透、高分辨率、低光損傷等優勢。它能實現活體深層組織的成像&#xff0c;支持實時動態觀察&…

Deepseek-R1 和 OpenAI o1 這樣的推理模型普遍存在“思考不足”的問題

每周跟蹤AI熱點新聞動向和震撼發展 想要探索生成式人工智能的前沿進展嗎&#xff1f;訂閱我們的簡報&#xff0c;深入解析最新的技術突破、實際應用案例和未來的趨勢。與全球數同行一同&#xff0c;從行業內部的深度分析和實用指南中受益。不要錯過這個機會&#xff0c;成為AI領…

Vue3學習筆記-Vue開發前準備-1

一、安裝15.0或更高版本的Node.js node -v npm -v 二、創建Vue項目 npm init vuelatest 三、Vue項目結構 node_modules: Vue項目運行的依賴文件public&#xff1a;資源文件夾package.json&#xff1a;信息描述文件

Denavit-Hartenberg DH MDH坐標系

Denavit-Hartenberg坐標系及其規則詳解 6軸協作機器人的MDH模型詳細圖_6軸mdh-CSDN博客 N軸機械臂的MDH正向建模&#xff0c;及python算法_mdh建模-CSDN博客 運動學3-----正向運動學 | 魚香ROS 機器人學&#xff1a;MDH建模 - 哆啦美 - 博客園 機械臂學習——標準DH法和改進MDH…

自然語言生成(NLG)算法模型評估方案的硬件配置、系統架構設計、軟件技術棧、實現流程和關鍵代碼

智能化對話中的自然語言生成&#xff08;NLG&#xff09;算法模型評估是一個復雜而多維的過程&#xff0c;它涉及多個評估指標和策略&#xff0c;以確保生成的文本質量、準確性和流暢性。 智能化對話中的NLG算法模型評估是一個涉及多個評估指標和策略的過程。通過選擇合適的評估…