keywords: 杨氏矩阵,结果搜索域为一个有序的上三角矩阵。每次减少对称矩阵的一行或者一列的数。
更多题解请见本系列目录 以后会发布本人熟悉的4种语言版本(python>C++>C#>Java)的代码,大家一起来刷个题,为科研解压,万一以后不想科研了,也可以去开发岗,对冲风险。
python
class Solution :
def twoSum ( self, numbers: List[ int ] , target: int ) - > List[ int ] :
left, right = 0 , len ( numbers) - 1
while left < right:
twosum = numbers[ left] + numbers[ right]
if ( twosum< target) : left += 1
elif ( twosum> target) : right -= 1
else : return [ left+ 1 , right+ 1 ]
C++
vector< int > twoSum ( vector< int > & numbers, int target) {
int i = 0 ;
int j = numbers. size ( ) - 1 ;
while ( i < j) {
int sum = numbers[ i] + numbers[ j] ;
if ( sum < target) {
i++ ;
} else if ( sum > target) {
j-- ;
} else {
return vector< int > { i+ 1 , j+ 1 } ;
}
}
return vector< int > { - 1 , - 1 } ;
}
Java
class Solution {
public int [ ] twoSum ( int [ ] numbers, int target) {
int len = numbers. length;
int [ ] arr = new int [ 2 ] ;
int i = 0 ;
int l= 0 , r= len- 1 ;
while ( l< r)
{
int sum = numbers[ l] + numbers[ r] ;
if ( sum== target)
{ arr[ 0 ] = ++ l; arr[ 1 ] = ++ r; return arr; }
if ( sum< target) l++ ;
if ( sum> target) r-- ;
}
return arr;
}
}