LeetCode 1237找出给定方程的正整数解

在这里插入图片描述
如果你想自定义测试,你可以输入整数 function_id 和一个目标结果 z 作为输入,其中 function_id 表示一个隐藏函数列表中的一个函数编号,题目只会告诉你列表中的 2 个函数。

你可以将满足条件的 结果数对 按任意顺序返回。
在这里插入图片描述
在这里插入图片描述

class Solution {
    public List<List<Integer>> findSolution(CustomFunction customfunction, int z) {
        
    }
}

解决:

对于传入进来的customfunction,他里面包含一个f(x,y)方法.因为这个函数是严格单调的
我们可以对x和y进行暴力遍历.最坏情况就为O(N^2);
1)当遍历的时候使用双重for循环进行遍历
2)一旦遍历到f(i,j) > z的情况,则直接跳出即可,因为这个函数是严格单调的,后面的i和j只会越来越大,
值肯定比z大.
3)当遍历的f(i,j) = z的时候我们把他放入到结果List中即可.

	public List<List<Integer>> findSolution(CustomFunction customfunction,int z){
		List<List<Integer>> result = new ArrayList<>();
		
		//双重for暴力遍历
		for(int i = 1;i <= 1000;i++){
			for(int j = 1;j <= 1000;j++){
			    //等于z直接放入到list中
				if(customfunction.f(i, j) == z){
					result.add(Arrays.asList(i,j));
				}
				//一旦大于z后,直接跳出.
				if(customfunction.f(i, j) > z){
					break;
				}
			}
		}
		return result;
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值