<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          ?LeetCode刷題實(shí)戰(zhàn)611:有效三角形的個(gè)數(shù)

          共 978字,需瀏覽 2分鐘

           ·

          2022-05-19 17:24

          算法的重要性,我就不多說(shuō)了吧,想去大廠,就必須要經(jīng)過(guò)基礎(chǔ)知識(shí)和業(yè)務(wù)邏輯面試+算法面試。所以,為了提高大家的算法能力,這個(gè)公眾號(hào)后續(xù)每天帶大家做一道算法題,題目就從LeetCode上面選 !

          今天和大家聊的問題叫做?有效三角形的個(gè)數(shù),我們先來(lái)看題面:
          https://leetcode.cn/problems/valid-triangle-number/

          Given?an?integer?array?nums,?return?the?number?of?triplets?chosen?from?the?array?that?can?make?triangles?if?we?take?them?as?side?lengths?of?a?triangle.

          給定一個(gè)包含非負(fù)整數(shù)的數(shù)組 nums ,返回其中可以組成三角形三條邊的三元組個(gè)數(shù)。

          示例

          示例 1:
          輸入: nums = [2,2,3,4]
          輸出: 3
          解釋:有效的組合是:
          2,3,4 (使用第一個(gè) 2)
          2,3,4 (使用第二個(gè) 2)
          2,2,3

          示例 2:
          輸入: nums = [4,2,3,4]
          輸出: 4


          解題


          排序+二分查找

          • 對(duì)數(shù)組進(jìn)行排序

          • 固定兩條邊,利用二分法查找第三條邊

          • 二分法的邊界長(zhǎng)度就是固定兩條邊的條件下,滿足第三條邊的個(gè)數(shù)

          • 每個(gè)固定兩條邊的組合,滿足三角形條件基礎(chǔ)下,更新三角形個(gè)數(shù),res+=邊界長(zhǎng)度

          • 固定邊的組合走完







          class?Solution?{
          public:
          ????int?triangleNumber(vector<int>& nums)?{
          ????????int?res = 0;
          ????????int?n = nums.size();
          ????????//先進(jìn)行排序 為二分查找建立條件
          ????????sort(nums.begin(),nums.end());
          ????????for(int?i = 0; i < n - 2; ++i){
          ????????????for(int?j = i + 1; j < n - 1; ++j){
          ????????????????//固定兩條邊
          ????????????????int?sum = nums[i]+nums[j];
          ????????????????//二分查找第三條符合得邊 發(fā)現(xiàn)了二分查找的一個(gè)邊界問題 right能否被取到是關(guān)鍵是<= 還是<
          ????????????????int?left = j + 1;
          ????????????????int?right = n - 1;
          ????????????????while(left <= right){
          ????????????????????int?mid = (right-left)/2?+ left;
          ????????????????????if(nums[mid] < sum){
          ????????????????????????left = mid + 1;
          ????????????????????}else{
          ????????????????????????right = mid - 1?;
          ????????????????????}
          ????????????????}
          ????????????????//判斷邊界 如果右邊界都滿足那么左邊界到右邊界上的每一個(gè)元素都滿足
          ????????????????if(nums[right]????????????????????res = res + right - j;
          ????????????????}
          ????????????}
          ????????}
          ????????return?res;
          ????}
          ??
          };


          上期推文:

          LeetCode1-600題匯總,希望對(duì)你有點(diǎn)幫助!
          LeetCode刷題實(shí)戰(zhàn)601:體育館的人流量
          LeetCode刷題實(shí)戰(zhàn)602:好友申請(qǐng) II :誰(shuí)有最多的好友
          LeetCode刷題實(shí)戰(zhàn)603:連續(xù)空余座位
          LeetCode刷題實(shí)戰(zhàn)604:迭代壓縮字符串
          LeetCode刷題實(shí)戰(zhàn)605:種花問題
          LeetCode刷題實(shí)戰(zhàn)606:根據(jù)二叉樹創(chuàng)建字符串
          LeetCode刷題實(shí)戰(zhàn)607:銷售員
          LeetCode刷題實(shí)戰(zhàn)608:樹節(jié)點(diǎn)
          LeetCode刷題實(shí)戰(zhàn)609:在系統(tǒng)中查找重復(fù)文件

          瀏覽 24
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  水多多成人免费视频在线播放 | 国产精品成人AV激情在线 | 久久久7777 | 成人电影A片 | 一级黄色淫秽视频免费观看 |