找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 5809|回复: 11
收起左侧

[提问] 18: Missing Two Numbers in Permutation

[复制链接]

10

主题

4

精华

251

积分

高级会员

Rank: 3Rank: 3

积分
251
发表于 2-28-2015 04:54 AM | 显示全部楼层 |阅读模式

亲!马上注册或者登录会查看更多内容!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x


思路很简单,就是用x + y 和x ^ 2 + y ^ 2的值来计算x, y。可是我半天都A不过,最后发现把long long改成int 就过了。
long long的精度不会比int低,不知道为什么,求解释!

  1. class Solution {
  2. public:
  3.        
  4.         vector<int> missing2Numbers(vector<int> &a) {
  5. long long sum = 0, squareSum = 0;
  6.                 int n = a.size();
  7.                 for(int i = 0;i < a.size();i++)
  8.                 {
  9.                         sum += (i + 1) - a【i】;
  10.                         squareSum += (i * i + 2 * i + 1) - a【i】 * a【i】;
  11.                 }
  12.                 sum += 2 * n + 3;
  13.                 squareSum += (n + 1) * (n + 1) + (n + 2) * (n + 2);
  14.                
  15.                 vector<int> res;
  16.                 for(int i = 1;i <= n + 2;i++)
  17.                         if (i * i + (sum - i) * (sum - i) == squareSum)
  18.                         {
  19.                                 res.push_back(i);
  20.                                 res.push_back(sum - i);
  21.                                 break;
  22.                         }
  23.                 return res;
  24.         }
  25. };
复制代码


47

主题

2

精华

379

积分

高级会员

Rank: 3Rank: 3

积分
379
发表于 2-28-2015 04:59 AM | 显示全部楼层
我用这个解法也过不了,改用异或就过了。。。

10

主题

4

精华

251

积分

高级会员

Rank: 3Rank: 3

积分
251
 楼主| 发表于 2-28-2015 05:11 AM | 显示全部楼层
本帖最后由 ufoahw 于 2-28-2015 05:13 AM 编辑
wjjal 发表于 2-28-2015 04:59 AM
我用这个解法也过不了,改用异或就过了。。。

异或怎么写的?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表