题目 给定方程f和值z,找出给定方程f(x,y)=z的正整数解x,y.f(x,y)关于x.y都是严格单调的. 题目保证 f(x, y) == z 的解处于 1 <= x, y <= 1000 的范围内. 方案 暴力双层循环O(N*N) 暴力,双层循环遍历,由于f是单调的,所以一旦遇到大于,则break.同样遇到等于,也可以加入结果并break.时间复杂度O(N*N),N是最大值1000. public List<List<Integer>> findSolution(C…
题目描述: class Solution: def findSolution(self, customfunction: 'CustomFunction', z: int) -> List[List[int]]: res = [] ,): ,): if customfunction.f(i,j) == z: res.append([i,j]) if customfunction.f(i,j) > z: break return res 另:O(N) class Solution(object)…
题目: 给定一个旋转数组,但是你不知道旋转位置,在旋转数组中找出给定target值出现的位置:你可以假设在数组中没有重复值出现 举例: (i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2). 在旋转后的数组中查找6,则返回index =2. 若查找10,则返回index= -1: 解题思路: 由于数组中没有重复出现的数字,因此旋转后的数组基本可以划分为两部分:因此解题思路可以转换为我们熟悉的二分查找:但是在二分查找时我们需要注意,到底在哪边查找? 1)…
题意:求方程x2-Dy2=1的最小正整数解 思路:用连分数法解佩尔方程,关键是找出√d的连分数表示的循环节.具体过程参见:http://m.blog.csdn.net/blog/wh2124335/8871535 当d为完全平方数时无解 将√d表示成连分数的形式,例如: 当d不为完全平方数时,√d为无理数,那么√d总可以表示成: 记 当n为偶数时,x0=p,y0=q:当n为奇数时,x0=2p2+1,y0=2pq 求d在1000以内佩尔方程的最小正整数解的c++打表程序(正常跑比较慢,这个题需要离…
示例 1: 输入: nums = [5,7,7,8,8,10], target = 8 输出: [3,4] 示例 2: 输入: nums = [5,7,7,8,8,10], target = 6 输出: [-1,-1] 思路:定义两个变量start和end,分别指向数组首元素和末尾元素,当start<end时,我们从下标start开始查找与target值相等的,找到退出循环,用相同的方法从后给前找,找到退出循环,并且返回[start,end],没有找到返回[-1,-1]; 代码如下: publi…
//数组中排序    int in[] = {1,6,5,8,9};    Arrays.sort(in);    for(int i=0;i<in.length;i++){       System.out.println(in[i]);   }    //数组中取最大值,最小值    int arr[] = {6,3,8,5,7,4,1};          int min2 = arr[0];          int temp = 0;          for(int i=1;i<a…
题目:给定一个排序数组,找出给定的target值出现的范围:算法复杂度要求在O(logn);如果没有找到,则返回[-1, -1]; 举例: For example,Given [5, 7, 7, 8, 8, 10] and target value 8,return [3, 4]. 解题思路: 一看到题目要求的时间复杂度O(logn),就自然想要要用到二分的方法,这道题目,我们自然也是用二分的方法: mid = (start + end) / 2;则target和nums[mid]的关系有三种:…
给定a.b两个文件,各存放50亿个url,每个url各占用64字节,内存限制是4G,如何找出a.b文件共同的url? 可以估计每个文件的大小为5G*64=300G,远大于4G.所以不可能将其完全加载到内存中处理.考虑采取分而治之的方法. 遍历文件a,对每个url求取hash(url)%1000,然后根据所得值将url分别存储到1000个小文件(设为a0,a1,...a999)当中.这样每个小文件的大小约为300M.遍历文件b,采取和a相同的方法将url分别存储到1000个小文件(b0,b1...…
用JAVA写一个函数.功能例如以下:随意给定一组数,比如{12,60,-8,99,15,35,17,18},找出随意数相加之后的结果为35(随意设定)的情况. 能够递归算法来解: package test1; import java.util.Arrays; public class demo { public static void main(String[] args) { String str = "12,60,-8,99,15,35,17,18,8,10,11,12"; int…