題目描述
博覽館正在展出由世上最佳的 m 位畫家所畫的圖畫。
wangjy想到博覽館去看這幾位大師的作品。
可是,那裡的博覽館有乙個很奇怪的規定,就是在購買門票時必須說明兩個數字,
a和b,代表他要看展覽中的第 a 幅至第 b 幅畫(包含 a 和 b)之間的所有圖畫,而門票
的價錢就是一張圖畫一元。
為了看到更多名師的畫,wangjy希望入場後可以看到所有名師的圖畫(至少各一張)。
可是他又想節省金錢。。。
作為wangjy的朋友,他請你寫乙個程式決定他購買門票時的 a 值和 b 值。
輸入格式
第一行是 n 和 m,分別代表博覽館內的圖畫總數及這些圖畫是由多少位名師的畫
所繪畫的。
其後的一行包含 n 個數字,它們都介於 1 和 m 之間,代表該位名師的編號。
輸出格式
a和 b(a<=b) 由乙個空格符所隔開。
保證有解,如果多解,輸出a最小的。
雙指標法求最小區間包含m個不同元素;
sum記錄區間的不同元素個數,當sum==m時,l 往右移(如果 l 位置上的元素個數大於等於2),更新最小區間就行,sum值都可以不變了;
**:
#include
#define ll long long
#define pa pair
#define ls k<<1
#define rs k<<1|1
#define inf 0x3f3f3f3f
using
namespace std;
const
int n=
1000100
;const
int m=
2000000
;const ll mod=
1e9+7;
int n,m,a[n]
,vis[
2100];
intmain()
if(ans>r-l+1)
}}cout<" "
}
雙指標法LeetCode總結
遍歷物件的過程中,使用兩個指標進行操作,實現相應的目的 經典環形鍊錶 leetcode142 待補充適用於有序陣列,設定陣列左索引與陣列右索引 基本流程是 publicf int nums leetcode11 盛水最多的容器 class solution return max leetcode15...
演算法思維 雙指標法
雙指標可分為三類 其中,滑動視窗 已單獨寫了一篇隨筆,可跳轉檢視。在快慢指標中,又有一類典型演算法,叫 floyd s cycle finding algorithm,其又名floyd s hare and tortoise algorithm。在這裡,我們主要談論左右指標和快慢指標。左右指標 主要...
雙指標法的常見應用
標籤 演算法 pivot null面試 2012 08 10 10 09 3247人閱讀收藏 舉報 資料結構 演算法 20 所謂雙指標,指的是在遍歷物件的過程中,不是普通的使用單個指標進行訪問,而是使用兩個相同方向或者相反方向的指標進行掃瞄,從而達到相應的目的。換言之,雙指標法充分使用了陣列有序這一...