<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      今日算法隨筆:三數之和

      題目鏈接:15. 三數之和

      思路

      排序 + 雙指針

      采用 排序 + 雙指針 的方法來解決三數之和問題。首先對數組進行排序,然后通過雙指針法,針對每一個固定的元素,從其后的數組部分尋找符合條件的三元組。這樣能夠避免重復的三元組,且利用排序的性質來優化查找效率。

      解題過程

      方法運用

      1. 排序數組:首先將數組 nums 進行升序排序,這樣可以方便使用雙指針法,同時也能跳過重復的元素,避免重復的三元組。
      2. 遍歷數組:從第一個元素開始,依次固定一個數 nums[i],然后使用雙指針法在 i+1 到數組末尾之間查找兩個數 nums[l]nums[r],使得三者之和為 0
        • 如果三者之和等于 0,將該三元組加入結果集。
        • 如果三者之和小于 0,左指針右移以增大和。
        • 如果三者之和大于 0,右指針左移以減小和。
      3. 跳過重復元素:為了避免重復的三元組,在遍歷過程中跳過相鄰相同的元素,并在更新指針時跳過重復的 nums[l]nums[r]

      復雜度

      • 時間復雜度: $O(n^2)$,排序的時間復雜度為 $O(n \log n)$,而雙指針的查找過程在最壞情況下為 $O(n^2)$,因此總的時間復雜度為 $O(n^2)$。
      • 空間復雜度: $O(1)$,除了存儲結果的空間外,算法的空間開銷主要用于排序,排序可以在原數組上進行,因此不需要額外空間。

      Code

      import java.util.ArrayList;
      import java.util.Arrays;
      import java.util.List;
      
      class Solution {
          public List<List<Integer>> threeSum(int[] nums) {
              // 存儲結果的列表
              List<List<Integer>> res = new ArrayList<>();
              // 對數組進行排序
              Arrays.sort(nums);
              int n = nums.length;
      
              // 遍歷數組
              for (int i = 0; i < n - 2; i++) {
                  // 跳過重復的第一個數字
                  if (i > 0 && nums[i] == nums[i - 1]) {
                      continue;
                  }
      
                  // 雙指針查找
                  int l = i + 1, r = n - 1;
                  while (l < r) {
                      int sum = nums[i] + nums[l] + nums[r];
      
                      if (sum == 0) {
                          // 找到三元組,加入結果集
                          res.add(Arrays.asList(nums[i], nums[l], nums[r]));
                          
                          // 跳過重復的左邊元素
                          while (l < r && nums[l] == nums[l + 1]) l++;
                          // 跳過重復的右邊元素
                          while (l < r && nums[r] == nums[r - 1]) r--;
      
                          // 移動雙指針
                          l++;
                          r--;
                      } else if (sum < 0) {
                          l++;  // 左指針右移
                      } else {
                          r--;  // 右指針左移
                      }
                  }
              }
              
              return res;
          }
      }
      
      posted @ 2024-09-05 10:31  魚擺擺不擺  閱讀(99)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲欧美日韩一区在线观看| 国产成人精品三上悠亚久久| 最新中文乱码字字幕在线| 免费av深夜在线观看| 日本中文字幕有码在线视频| 国产第一页浮力影院入口| 女同另类激情在线三区| 亚洲av成人网在线观看| 一区二区三区无码免费看| 精品国产一区二区三区2021 | 精品久久久久国产免费| 欧美牲交a欧美牲交aⅴ图片| 欧美日韩v| 91孕妇精品一区二区三区| 男女性高爱潮免费网站| 精品无码三级在线观看视频| 国产高跟黑色丝袜在线| 亚洲激情av一区二区三区| 亚洲免费视频一区二区三区| 亚洲香蕉伊综合在人在线| 艳妇臀荡乳欲伦69调教视频| 国产高清视频一区二区三区| 強壮公弄得我次次高潮A片| 亚洲av无码之国产精品网址蜜芽 | 欧美孕妇乳喷奶水在线观看| 欧美一区二区三区性视频| 四虎网址| 久99久热精品免费视频| 如皋市| 国产成人午夜福利精品| 国产欧美日韩精品第二区| 女人扒开的小泬高潮喷小| 国产精品一线天在线播放| 国产suv精品一区二区883| 熟女视频一区二区三区嫩草| 国产精品亚洲二区亚瑟| 国产又爽又黄又爽又刺激| 91老熟女老人国产老太| 尤物yw193无码点击进入| 亚洲女同在线播放一区二区| 強壮公弄得我次次高潮A片|