跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 微软面试题:三数之和 II
未分類
28 2 月 2021

微软面试题:三数之和 II

微软面试题:三数之和 II

資深大佬 : zzzrf 1

描述

输入 n,求所有符合 x^2+y^2+z^2 = n 的 x, y, z 的方案数。( x, y, z 为非负整数)

  • n <= 1000000
  • x, y, z 满足 (x<=y<=z),只要选择出来的三个数相同就算同一种方案

在线评测地址

样例 1

输入:n = 0 输出:1 解释:当其中一个为 1,剩下两个为 0,一共有 1 种方案。 

样例 2

输入:n = 1 输出:1 解释:当 x = 0, y = 0, z = 0 时等式成立。 

找出所有的小于 n 的完全平方数,套 3sum 或者确定两个数然后套二分均可。

public class Solution {     /**      * @param n: The n      * @return: The answer      */     public int threeSum2(int n) {         // Write your code here         int m = (int)Math.round(Math.sqrt(n));         if (m * m > n) {             m--;         }         int ans = 0;         for (int i = 0; i <= m; i++) {             int res = n - i * i;             int left = i, right = m;             while (left <= right) {                 int tmp = left * left + right * right;                 if (tmp > res) {                     right--;                 } else if (tmp < res) {                     left++;                 } else {                     ans++;                     left++;                 }             }         }         return ans;     } } 

更多题解参考

大佬有話說 (3)

  • 資深大佬 : Deepseafish

    两个样例都错了吧

  • 資深大佬 : doomzc

    我怎么也觉得两个例子都不对

  • 主 資深大佬 : zzzrf

    @Deepseafish 不好意思,弄反了~

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具