LeetCode實戰:三數之和

LeetCode實戰:三數之和


​題目英文

Given an array nums of n integers, are there elements a, b, c in nums such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.

Note:

The solution set must not contain duplicate triplets.

Example:

Given array nums = [-1, 0, 1, 2, -1, -4],
A solution set is:
[
 [-1, 0, 1],
 [-1, -1, 2]
]

題目中文

給定一個包含 n 個整數的數組nums,判斷nums中是否存在三個元素a,b,c,使得a + b + c = 0?找出所有滿足條件且不重複的三元組。

注意:答案中不可以包含重複的三元組。

示例:

給定數組 nums = [-1, 0, 1, 2, -1, -4],
滿足要求的三元組集合為:
[
 [-1, 0, 1],
 [-1, -1, 2]
]

算法實現

public class Solution {
 public IList> ThreeSum(int[] nums) {
 IList> result = new List>();
 if (nums == null || nums.Length < 3)
 return result;
 nums = nums.OrderBy(a => a).ToArray();
 int len = nums.Length;
 for (int i = 0; i  
< len; i++) { if (nums[i] > 0) // 如果當前數字大於0,則三數之和一定大於0,所以結束循環 break; if (i > 0 && nums[i] == nums[i - 1]) continue; // 去重 int l = i + 1; int r = len - 1; while (l < r) { int sum = nums[i] + nums[l] + nums[r]; if (sum == 0) { result.Add(new List() {nums[i], nums[l], nums[r]}); while (l < r && nums[l] == nums[l + 1]) l++; // 去重 while (l < r && nums[r - 1] == nums[r]) r--; //去重 l++; r--; } else if (sum < 0) { l++; } else if (sum > 0) { r--; } } } return result; } }

實驗結果

  • 狀態:通過
  • 313 / 313 個通過測試用例
  • 執行用時:468 ms
LeetCode實戰:三數之和

提交結果

相關圖文

  • LeetCode實戰:刪除鏈表的倒數第N個節點
  • LeetCode實戰:合併兩個有序鏈表
  • LeetCode實戰:兩兩交換鏈表中的節點
  • LeetCode實戰:旋轉鏈表
  • LeetCode實戰:相同的樹
  • LeetCode實戰:對稱二叉樹
  • LeetCode實戰:二叉樹的最大深度
  • LeetCode實戰:搜索二維矩陣
  • LeetCode實戰:將有序數組轉換為二叉搜索樹
  • 資料分享:數學建模資料分享 -- 圖論部分
  • 資料分享:數學建模資料分享 -- 神經網絡部分
  • 如何利用 C# 實現 K 最鄰近算法?
  • 如何利用 C# 實現 K-D Tree 結構?
  • 如何利用 C# + KDTree 實現 K 最鄰近算法?
  • 如何利用 C# 對神經網絡模型進行抽象?
  • 如何利用 C# 實現神經網絡的感知器模型?
  • 如何利用 C# 實現 Delta 學習規則?
  • 如何利用 C# 實現 誤差反向傳播 學習規則?
  • 如何利用 C# 爬取帶 Token 驗證的網站數據?
  • 如何利用 C# 向 Access 數據庫插入大量數據?
  • 如何利用 C# + Python 破解貓眼電影的反爬蟲機制?

經過8年多的發展,LSGO軟件技術團隊在「地理信息系統」、「數據統計分析」、「計算機視覺」等領域積累了豐富的研發經驗,也建立了人才培養的完備體系,由於自己準備在「量化交易」領域精進技能,如果大家對這個領域感興趣可以與我聯繫,加入我們的量化學習群一起學習探討。

在這個領域我已做了以下積累:

策略部分:

  • 數字貨幣 One 的投資價值分析
  • 數字資產量化中的跨市場套利策略
  • 數字資產量化中的同市場套利策略
  • 數字資產量化中的網格交易法
  • 我們能否效仿李笑來的投資策略?
  • 賺錢是剛需,如何正確的交易股票?

數據部分:

  • 如何利用 C# 爬取 One 的交易數據?
  • 如何利用 C# 爬取 One 持有者返利數據?
  • 如何利用 C# 爬取BigOne交易所的公告?
  • 如何利用 C# 爬取Gate.io交易所的公告?
  • 如何利用 C# 爬取「財報說」中的股票數據?

自動化交易部分:

  • 封裝BigOne API:身份驗證
  • 封裝BigOne API:獲取賬戶資產
  • 封裝BigOne API:訂單系統
  • 封裝BigOne API:網格交易法
  • 封裝BigOne API:代碼的重構
  • 進一步完善自動化交易系統 01
  • 進一步完善自動化交易系統 02
  • 進一步完善自動化交易系統 03
  • 進一步完善自動化交易系統 04
  • 如何開發「股票數據分析軟件」(上)
  • 如何開發「股票數據分析軟件」(中)
  • 如何開發「股票數據分析軟件」(下)
  • 進一步完善「股票數據分析軟件」 - 01

後臺回覆「搜搜搜」,隨機獲取電子資源!

歡迎關注,請掃描二維碼:

LeetCode實戰:三數之和



分享到:


相關文章: