2055. 蠟燭之間的盤子

2055. 蠟燭之間的盤子

給你一個長桌子,桌子上盤子和蠟燭排成一列。給你一個下標從 0?開始的字符串?s?,它只包含字符?‘’ 和?‘|’?,其中?'’?表示一個 盤子?,’|’?表示一支?蠟燭?。

同時給你一個下標從 0?開始的二維整數數組?queries?,其中?queries[i] = [lefti, righti]?表示 子字符串?s[lefti…righti]?(包含左右端點的字符)。對于每個查詢,你需要找到 子字符串中?在 兩支蠟燭之間?的盤子的 數目?。如果一個盤子在 子字符串中?左邊和右邊 都?至少有一支蠟燭,那么這個盤子滿足在 兩支蠟燭之間?。

比方說,s = “|||||"?,查詢?[3, 8]?,表示的是子字符串?"||**|”?。子字符串中在兩支蠟燭之間的盤子數目為?2?,子字符串中右邊兩個盤子在它們左邊和右邊 都 至少有一支蠟燭。
請你返回一個整數數組?answer?,其中?answer[i]?是第?i?個查詢的答案。

image.png

示例 1:輸入:s = "**|**|***|", queries = [[2,5],[5,9]]
輸出:[2,3]
解釋:
- queries[0] 有兩個盤子在蠟燭之間。
- queries[1] 有三個盤子在蠟燭之間。

image.png

示例 2:輸入:s = "***|**|*****|**||**|*", queries = [[1,17],[4,5],[14,17],[5,11],[15,16]]
輸出:[9,0,0,0,0]
解釋:
- queries[0] 有 9 個盤子在蠟燭之間。
- 另一個查詢沒有盤子在蠟燭之間。

提示:

  • 3 <= s.length <= 10510^5105
  • s?只包含字符?‘*’ 和?‘|’?。
  • 1 <= queries.length <= 10510^5105
  • queries[i].length == 2
  • 0 <= lefti <= righti < s.length

解題思路

維護一個前綴和數組,保存每根蠟燭的左邊有多少個盤子,并且用數組記錄下所有蠟燭的下標,因為我們是按序遍歷數組,所以下標數組的元素都是遞增的,對于每個查詢queries[i] = [lefti, righti],我們使用二分差值找出下標數組中lefti右邊的第一根蠟燭下標以及righti左邊的第一根蠟燭的下標,利用前綴和數組就可以求出兩根蠟燭間盤子的個數了

代碼

class Solution {
public:vector<int> platesBetweenCandles(string s, vector<vector<int>>& queries) {int pre(0);map<int,int> m;vector<int> idx;for (int i = 0; i < s.size(); ++i) {if (s[i]=='*')pre++;else {idx.push_back(i);m[i]=pre;}}vector<int> res;for (auto q:queries){int l=bs(idx,q[0]),r=bs(idx,q[1]);if (l==r||q[0]==q[1]) {res.push_back(0);continue;}int a=idx.size();//末尾if(r>a-1)r=a-1;else r= idx[r]==q[1]?r:r-1;res.push_back(m[idx[r]]-m[idx[l]]);//res.push_back(m[bs(idx,q[1])]-m[bs(idx,q[0])]);}return res;}int  bs(vector<int> &a,int tar){int l=0,r=a.size()-1;while (l<=r){int mid=(r-l)/2+l;if(a[mid]>tar){r=mid-1;}else if(a[mid]<tar){l=mid+1;}else return mid;}return l;}
};

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

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

相關文章

Template、ItemsPanel、ItemContainerStyle、ItemTemplate

原文:Template、ItemsPanel、ItemContainerStyle、ItemTemplate先來看一張圖(網上下的圖&#xff0c;加了幾個字) 實在是有夠“亂”的&#xff0c;慢慢來理一下&#xff1b; 1、Template是指控件的樣式 在WPF中所有繼承自contentcontrol類的控件都含有此屬性&#xff0c;&#…

熊貓燒香分析報告_熊貓分析進行最佳探索性數據分析

熊貓燒香分析報告目錄 (Table of Contents) Introduction 介紹 Overview 總覽 Variables 變數 Interactions 互動互動 Correlations 相關性 Missing Values 缺失值 Sample 樣品 Summary 摘要 介紹 (Introduction) There are countless ways to perform exploratory data analys…

2060. 同源字符串檢測

2060. 同源字符串檢測 原字符串由小寫字母組成&#xff0c;可以按下述步驟編碼&#xff1a; 任意將其 分割 為由若干 非空 子字符串組成的一個 序列 。 任意選擇序列中的一些元素&#xff08;也可能不選擇&#xff09;&#xff0c;然后將這些元素替換為元素各自的長度&#x…

vue中的data用return返回

為什么在大型項目中data需要使用return返回數據呢&#xff1f;答&#xff1a;不使用return包裹的數據會在項目的全局可見&#xff0c;會造成變量污染&#xff1b;使用return包裹后數據中變量只在當前組件中生效&#xff0c;不會影響其他組件。 1、在簡單的vue實例中看到的Vue實…

白褲子變粉褲子怎么辦_使用褲子構建構建數據科學的monorepo

白褲子變粉褲子怎么辦At HousingAnywhere, one of the first major obstacles we had to face when scaling the Data team was building a centralised repository that contains our ever-growing machine learning applications. Between these projects, many of them shar…

ubuntu+anaconda+tensorflow 及相關問題

配置tensorflow部分參考&#xff1a;https://blog.csdn.net/XUTIAN1129/article/details/78997633 裝完anaconda, source ~/.bashrc后, 可以直接 pip install tensorflow-gpu , 珍愛生命&#xff0c;遠離bazel。但想要c/c調用tf的時候遠離不了&#xff0c;還是得bazel編譯安裝t…

2022. 將一維數組轉變成二維數組

2022. 將一維數組轉變成二維數組 給你一個下標從 0 開始的一維整數數組 original 和兩個整數 m 和 n 。你需要使用 original 中 所有 元素創建一個 m 行 n 列的二維數組。 original 中下標從 0 到 n - 1 &#xff08;都 包含 &#xff09;的元素構成二維數組的第一行&#xf…

支持向量機SVM算法原理及應用(R)

支持向量機SVM算法原理及應用&#xff08;R&#xff09; 2016年08月17日 16:37:25 閱讀數&#xff1a;22292更多 個人分類&#xff1a; 數據挖掘實戰應用版權聲明&#xff1a;本文為博主原創文章&#xff0c;轉載請注明來源。 https://blog.csdn.net/csqazwsxedc/article/detai…

mad離群值_全部關于離群值

mad離群值An outlier is a data point in a data set that is distant from all other observations. A data point that lies outside the overall distribution of the dataset. Or in a layman term, we can say, an outlier is something that behaves differently from th…

2057. 值相等的最小索引

2057. 值相等的最小索引 給你一個下標從 0 開始的整數數組 nums &#xff0c;返回 nums 中滿足 i mod 10 nums[i] 的最小下標 i &#xff1b;如果不存在這樣的下標&#xff0c;返回 -1 。 x mod y 表示 x 除以 y 的 余數 。 示例 1&#xff1a;輸入&#xff1a;nums [0,1,2…

SpringBoot中各配置文件的優先級及加載順序

我們在寫程序的時候會碰到各種環境(開發、測試、生產)&#xff0c;因而&#xff0c;在我們切換環境的時候&#xff0c;我們需要手工切換配置文件的內容。這大大的加大了運維人員的負擔&#xff0c;同時會帶來一定的安全隱患。 為此&#xff0c;為了能更合理地重寫各屬性的值&am…

青年報告_了解青年的情緒

青年報告Youth-led media is any effort created, planned, implemented, and reflected upon by young people in the form of media, including websites, newspapers, television shows, and publications. Such platforms connect writers, artists, and photographers in …

post提交參數過多時,取消Tomcat對 post長度限制

1.Tomcat 默認的post參數的最大大小為2M&#xff0c; 當超過時將會出錯&#xff0c;可以配置maxPostSize參數來改變大小。 從 apache-tomcat-7.0.63 開始&#xff0c;參數 maxPostSize 的含義就變了&#xff1a; 如果將值設置為 0&#xff0c;表示 POST 最大值為 0&#xff0c;…

2048. 下一個更大的數值平衡數

2048. 下一個更大的數值平衡數 如果整數 x 滿足&#xff1a;對于每個數位 d &#xff0c;這個數位 恰好 在 x 中出現 d 次。那么整數 x 就是一個 數值平衡數 。 給你一個整數 n &#xff0c;請你返回 嚴格大于 n 的 最小數值平衡數 。 示例 1&#xff1a;輸入&#xff1a;n …

bzoj1222: [HNOI2001]產品加工

一開始以為是費用流。。然后搞不出來&#xff0c;路牌是DP&#xff0c;想一想 f[i][j]表示加工到第i個產品&#xff0c;然后A用時j&#xff0c;B用時的最小值 那么f[i][j]max(f[i-1][j-a[i]],f[i-1][j]b[i],f[i-1][j-c[i]]c[i]) 滾掉一維美滋滋 #include<cstdio> #includ…

map(平均平均精度_客戶的平均平均精度

map(平均平均精度Disclaimer: this was created for my clients because it’s rather challenging to explain such a complex metric in simple words, so don’t expect to see much of math or equations here. And remember that I try to keep it simple.免責聲明 &#…

Sublime Text 2搭建Go開發環境,代碼提示+補全+調試

本文在已安裝Go環境的前提下繼續。 1、安裝Sublime Text 2 2、安裝Package Control。 運行Sublime&#xff0c;按下 Ctrl&#xff08;在Tab鍵上邊&#xff09;&#xff0c;然后輸入以下內容&#xff1a; import urllib2,os,hashlib; h 7183a2d3e96f11eeadd761d777e62404 e330…

629. K個逆序對數組

629. K個逆序對數組 給出兩個整數 n 和 k&#xff0c;找出所有包含從 1 到 n 的數字&#xff0c;且恰好擁有 k 個逆序對的不同的數組的個數。 逆序對的定義如下&#xff1a;對于數組的第i個和第 j個元素&#xff0c;如果滿i < j且 a[i] > a[j]&#xff0c;則其為一個逆…

zookeeper、hbase常見命令

a) Zookeeper&#xff1a;幫助命令-help i. ls /查看zk下根節點目錄 ii. create /zk_test my_data//在測試集群沒有創建成功 iii. get /zk_test my_data//獲取節點信息 iv. set / zk_test my_data//更改節點相關信息 v. delete /zk_test//刪除節點信…

鮮活數據數據可視化指南_數據可視化實用指南

鮮活數據數據可視化指南Exploratory data analysis (EDA) is an essential part of the data science or the machine learning pipeline. In order to create a robust and valuable product using the data, you need to explore the data, understand the relations among v…