x*g
2 楼
俺们附近的cvs店里所有刮胡刀都是锁着的,要买的话需要叫小二开锁。
室友周日去的时候,所有的fusion proglide都卖完了。室友只好去问小二有没有新货
,小二就跑到仓库里拿了一个package。
我们昨天也去了,也是问小二有没有package,小二又从仓库里拿了一个package。
柜台上没有package的,需要向小二要。想必cvs还是有货,只是没有摆上柜台而已。
室友周日去的时候,所有的fusion proglide都卖完了。室友只好去问小二有没有新货
,小二就跑到仓库里拿了一个package。
我们昨天也去了,也是问小二有没有package,小二又从仓库里拿了一个package。
柜台上没有package的,需要向小二要。想必cvs还是有货,只是没有摆上柜台而已。
k*t
5 楼
可以用先用pair(value, index), 然后sort pair based on value, 这样也是可以的
,就是比较麻烦点
,就是比较麻烦点
x*0
6 楼
pai..从没见过的说
l*u
8 楼
没看见过
k*t
11 楼
如果你用c/c++的话 就定义一个struct,里面有两个variable, 一个value, 一个index.
sort时用vector的自带的sort, 不过要自己定义一个comparator。
sort时用vector的自带的sort, 不过要自己定义一个comparator。
r*6
12 楼
pai baozi
k*t
13 楼
不过最优解法还是用hashtable
s*s
17 楼
我的代码:
struct itemRecord {
int index;
int val;
itemRecord(int i, int v): index(i), val(v) {}
};
bool itemRecordLess(itemRecord i1, itemRecord i2) {
return i1.val < i2.val;
}
class Solution {
public:
vector twoSum(vector &numbers, int target) {
vector result;
int n = numbers.size();
vector numRecords;
for(int i=0; i numRecords.push_back(itemRecord(i, numbers[i]));
sort(numRecords.begin(), numRecords.end(), itemRecordLess);
for(int i=0; i int num = target - numRecords[i].val;
int ind = binarySearch(numRecords, i+1, n-1, num);
if(ind > i) {
if(numRecords[i].index > numRecords[ind].
index) {
result.push_back(numRecords[ind].
index+1);
result.push_back(numRecords[i].index
+1);
} else {
result.push_back(numRecords[i].index
+1);
result.push_back(numRecords[ind].
index+1);
}
return result;
}
}
return result;
}
int binarySearch(vector &numbers, int i, int j, int
target) {
while(i <= j) {
int m = (i+j)/2;
if(target == numbers[m].val)
return m;
else if(target > numbers[m].val)
i = m + 1;
else
j = m - 1;
}
return -1;
}
};
【在 c********p 的大作中提到】
: 返回的是index,这个不能排序吧?排序顺序就乱了。。。
: 哪个解法最优?
struct itemRecord {
int index;
int val;
itemRecord(int i, int v): index(i), val(v) {}
};
bool itemRecordLess(itemRecord i1, itemRecord i2) {
return i1.val < i2.val;
}
class Solution {
public:
vector
vector
int n = numbers.size();
vector
for(int i=0; i
sort(numRecords.begin(), numRecords.end(), itemRecordLess);
for(int i=0; i
int ind = binarySearch(numRecords, i+1, n-1, num);
if(ind > i) {
if(numRecords[i].index > numRecords[ind].
index) {
result.push_back(numRecords[ind].
index+1);
result.push_back(numRecords[i].index
+1);
} else {
result.push_back(numRecords[i].index
+1);
result.push_back(numRecords[ind].
index+1);
}
return result;
}
}
return result;
}
int binarySearch(vector
target) {
while(i <= j) {
int m = (i+j)/2;
if(target == numbers[m].val)
return m;
else if(target > numbers[m].val)
i = m + 1;
else
j = m - 1;
}
return -1;
}
};
【在 c********p 的大作中提到】
: 返回的是index,这个不能排序吧?排序顺序就乱了。。。
: 哪个解法最优?
i*4
22 楼
cong
c*e
23 楼
我用的是c++ map
l*o
24 楼
这周还能买吗,在广告商没看到哎,能买几个
买了20个胖子晚到乐
买了20个胖子晚到乐
t*a
25 楼
用个map吧,key是numbers的value, value是numbers的index
这是我前几天写的
class Solution {
public:
vector twoSum(vector &numbers, int target) {
unordered_map index;
for(int i = 0; i < numbers.size(); i++){
auto position = index.find(target - numbers[i]);
if(position != index.end()) { //hit!
vector result;
result.push_back(position->second + 1);
result.push_back(i + 1);
return result;
}
index[numbers[i]] = i; //build index
}
throw invalid_argument("result not found");
}
};
【在 c********p 的大作中提到】
: 返回的是index,这个不能排序吧?排序顺序就乱了。。。
: 哪个解法最优?
这是我前几天写的
class Solution {
public:
vector
unordered_map
for(int i = 0; i < numbers.size(); i++){
auto position = index.find(target - numbers[i]);
if(position != index.end()) { //hit!
vector
result.push_back(position->second + 1);
result.push_back(i + 1);
return result;
}
index[numbers[i]] = i; //build index
}
throw invalid_argument("result not found");
}
};
【在 c********p 的大作中提到】
: 返回的是index,这个不能排序吧?排序顺序就乱了。。。
: 哪个解法最优?
c*p
27 楼
好的我捧回去读读。。
【在 t***a 的大作中提到】
: 用个map吧,key是numbers的value, value是numbers的index
: 这是我前几天写的
: class Solution {
: public:
: vector twoSum(vector &numbers, int target) {
: unordered_map index;
: for(int i = 0; i < numbers.size(); i++){
: auto position = index.find(target - numbers[i]);
: if(position != index.end()) { //hit!
: vector result;
【在 t***a 的大作中提到】
: 用个map吧,key是numbers的value, value是numbers的index
: 这是我前几天写的
: class Solution {
: public:
: vector
: unordered_map
: for(int i = 0; i < numbers.size(); i++){
: auto position = index.find(target - numbers[i]);
: if(position != index.end()) { //hit!
: vector
相关阅读
可以给UPS送货大叔顺便PICK UP个Package吗最近要租房子,但是被要求买renter insurance!最近没有DELL 电视DEALS了吗?在家砍排骨有何神器可用?AMEX OFFER: 20 off 100 Lord and Taylor沃尔玛dyson dc41 complete399算是好deal吗?Safeway倒赚的Runa teaWalmart 2x Savingscatcher rewards when you redeem to Bluebird account打胖子了,免费欧莱雅洗发水来了小熊维生素的问题如何Subscribe Email得Gap outlet和 gaps factory的couponUp up facial tissue clearence这周尿布是不是还要分单买啊?东西买贵了店家不PM,可以refuse package吗?那谁要买消毒湿纸巾的:下周RA免费lysol wipes and many more哪儿买奶泵划算?请教SEAR 退货手机摔坏了,有智能临时机推荐吗?有人拿到ebay 100刀胖子吗?groupon mobile app only $10 target GC for 5