15. 3Sum

 1 static int wing=[]()
 2 {
 3     std::ios::sync_with_stdio(false);
 4     cin.tie(NULL);
 5     return 0;
 6 }();
 7 
 8 class Solution 
 9 {
10 public:
11     vector<vector<int>> threeSum(vector<int>& nums) 
12     {
13         vector<vector<int>> res;
14         int sz=nums.size();
15         sort(nums.begin(),nums.end());
16         int target,left,right,sum;
17         for(int i=0;i<sz;i++)
18         {
19             if(nums[i]>0)
20                 break;
21             if(i>0&&nums[i-1]==nums[i])
22                 continue;
23             target=-nums[i];
24             left=i+1;
25             right=sz-1;
26             while(left<right)
27             {
28                 sum=nums[left]+nums[right];
29                 if(sum==target)
30                 {
31                     res.push_back({nums[i],nums[left],nums[right]});
32                     left++;
33                     while(left<right&&nums[left]==nums[left-1])
34                         left++;
35                     right--;
36                     while(left<right&&nums[right]==nums[right+1])
37                         right--;
38                 }
39                 else if(sum<target)
40                     left++;
41                 else
42                     right--;
43             }
44         }
45         return res;
46     }
47 };

先排序,以一个元素为扫描基准,在该元素右侧查找两个元素,使得这两个元素的和为当前扫描元素的相反数。将三和问题转化为二和问题,时间复杂度O(n²)

转载于:https://www.cnblogs.com/zhuangbijingdeboke/p/9262733.html

在 NumPy 中,`sum` 函数用于计算数组元素的总和。该函数可以作用于多维数组,并且可以通过指定 `axis` 参数来控制求和的方向。基本语法如下: ```python numpy.sum(a, axis=None, dtype=None, out=None, keepdims=<no value>, initial=<no value>, where=<no value>) ``` - `a`:输入的数组。 - `axis`:指定沿着哪个轴进行求和。如果为 `None`,则对数组所有元素求和;如果为整数,则沿着该轴求和。 - `dtype`:指定输出结果的数据类型。 - `out`:可选参数,用于指定输出数组。 - `keepdims`:若为 `True`,则在输出中保留被求和的轴,长度为 1。 - `initial`:指定求和的初始值。 - `where`:指定一个布尔数组,仅对 `where` 为 `True` 的位置求和。 ### 示例 #### 1. 一维数组求和 ```python import numpy as np arr = np.array([1, 2, 3, 4, 5]) total = np.sum(arr) print(total) # 输出 15 ``` #### 2. 二维数组按轴求和 ```python arr = np.array([[1, 2], [3, 4]]) row_sum = np.sum(arr, axis=1) # 按行求和 col_sum = np.sum(arr, axis=0) # 按列求和 print(row_sum) # 输出 [3 7] print(col_sum) # 输出 [4 6] ``` #### 3. 指定初始值 ```python arr = np.array([1, 2, 3]) total = np.sum(arr, initial=10) print(total) # 输出 16 ``` #### 4. 使用 `keepdims` 保留维度 ```python arr = np.array([[1, 2], [3, 4]]) total = np.sum(arr, axis=1, keepdims=True) print(total) # 输出 [[3], [7]] ``` ### 注意事项 - `np.sum` 返回的是一个新的数组或标量,原始数组不会被修改。 - 若数组为空,`np.sum` 返回 `0.0`[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值