当前位置: 首页 > news >正文

Day23:和为s的数字

购物车内的商品价格按照升序记录于数组 price。请在购物车中找到两个商品的价格总和刚好是 target。若存在多种情况,返回任一结果即可。

示例 1:

输入:price = [3, 9, 12, 15], target = 18
输出:[3,15] 或者 [15,3]

示例 2:

输入:price = [8, 21, 27, 34, 52, 66], target = 61
输出:[27,34] 或者 [34,27]

LCR 179. 查找总价格为目标值的两个商品 - 力扣(LeetCode) 

二分查找法(纯粹想练一下二分查找) 

class Solution {
    public int[] twoSum(int[] price, int target) {
        int[] result = new int[2];
        for(int i = 0; i < price.length; i++){
            if(binarySearch(price, 0 , price.length -1, target - price[i])){
                result[0] = price[i];
                result[1] = target - price[i];
            }
        }

        return result;
    }

    private boolean binarySearch(int[] arr , int left, int right,  int target){
        int mid = left + (right - left)/2;
        if(left > right){
            return false;
        }

        if(arr[mid] == target){
            return true;
        } else if(arr[mid] > target){
            return binarySearch(arr, left , mid - 1 , target);
        } else{
            return binarySearch(arr, mid + 1 , right , target);
        }
    }
}

双指针法:

class Solution {
    public int[] twoSum(int[] price, int target) {
        int i = 0, j = price.length - 1;
        while(i < j) {
            int s = price[i] + price[j];
            if(s < target) i++;
            else if(s > target) j--;
            else return new int[] { price[i], price[j] };
        }
        return new int[0];
    }
}

作者:Krahets
链接:https://leetcode.cn/problems/he-wei-sde-liang-ge-shu-zi-lcof/solutions/164083/mian-shi-ti-57-he-wei-s-de-liang-ge-shu-zi-shuang-/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

拓展题目:

待传输文件被切分成多个部分,按照原排列顺序,每部分文件编号均为一个 正整数(至少含有两个文件)。传输要求为:连续文件编号总和为接收方指定数字 target 的所有文件。请返回所有符合该要求的文件传输组合列表。

注意,返回时需遵循以下规则:

  • 每种组合按照文件编号 升序 排列;
  • 不同组合按照第一个文件编号 升序 排列。

LCR 180. 文件组合 - 力扣(LeetCode)

 List<int[]> vec = new ArrayList<int[]>();
        int sum = 0, limit = (target - 1) / 2; // (target - 1) / 2 等效于 target / 2 下取整
        for (int i = 1; i <= limit; ++i) {
            for (int j = i;; ++j) {
                sum += j;
                if (sum > target) {
                    sum = 0;
                    break;
                } else if (sum == target) {
                    int[] res = new int[j - i + 1];
                    for (int k = i; k <= j; ++k) {
                        res[k - i] = k;
                    }
                    vec.add(res);
                    sum = 0;
                    break;
                }
            }
        }
        return vec.toArray(new int[vec.size()][]);

作者:力扣官方题解
链接:https://leetcode.cn/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/solutions/128296/mian-shi-ti-57-ii-he-wei-sde-lian-xu-zheng-shu-x-2/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关文章:

  • 金牛区文创地标:国际数字影像产业园亮点解析
  • Android Kotlin 权限工具类封装:简化动态权限管理
  • 三维空间中点、线、面的关系
  • 【Elasticsearch】开启大数据分析的探索与预处理之旅
  • dynamic_cast的理解
  • 使用OpenGL实现双线性插值和双三次插值C++实现
  • 【C++】类和对象(二)默认成员函数之拷贝构造函数、运算符重载
  • IPShocks:行星际激波数据库
  • 机器学习——Bagging、随机森林
  • leetcode day31 453+435
  • 代理服务器中的代理服务器与SSL协议有什么关系?
  • 元宇宙中的“数字护照“:代理IP如何重构虚拟世界的网络规则
  • 无序抓取系列(四)
  • linux的基础命令
  • 微信小程序登录和获取手机号
  • [学习笔记]NC工具安装及使用
  • 【AI News | 20250326】每日AI进展
  • 最大字段和问题 C++(穷举、分治法、动态规划)
  • h5运行在手机浏览器查看控制台信息
  • leetcode41.缺失的第一个正数
  • 巴基斯坦外长:印巴已同意立即停火
  • 道指跌逾100点,特斯拉涨近5%
  • 上汽享道出行完成13亿元C轮融资,已启动港股IPO计划
  • 5月12日至13日北京禁飞“低慢小”航空器
  • 视频丨习近平主席出席俄方在机场举行的迎宾仪式
  • 创新创业50人论坛开幕在即,双创青年为何选择来上海筑梦?