网站引导页psd,没有广告的免费个人网站建设,网站 手机案例,做淘宝是不是要两根网站#x1f680; 算法题 #x1f680; #x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 #x1f340; #x1f332; 越难的东西,越要努力坚持#xff0c;因为它具有很高的价值#xff0c;算法就是这样✨ #x1f332; 作者简介#xff1a;硕风和炜#xff0c;… 算法题 算法刷题专栏 | 面试必备算法 | 面试高频算法 越难的东西,越要努力坚持因为它具有很高的价值算法就是这样✨ 作者简介硕风和炜CSDN-Java领域新星创作者保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享 恭喜你发现一枚宝藏博主,赶快收入囊中吧 人生如棋我愿为卒行动虽慢可谁曾见我后退一步 算法题 目录 题目链接⛲ 题目描述 求解思路实现代码运行结果⚡ 模拟 求解思路 实现代码 运行结果 ⚡ 二分 求解思路 实现代码 运行结果 共勉 题目链接
2824. 统计和小于目标的下标对数目
⛲ 题目描述
给你一个下标从 0 开始长度为 n 的整数数组 nums 和一个整数 target 请你返回满足 0 i j n 且 nums[i] nums[j] target 的下标对 (i, j) 的数目。
示例 1
输入nums [-1,1,2,3,1], target 2 输出3 解释总共有 3 个下标对满足题目描述
(0, 1) 0 1 且 nums[0] nums[1] 0 target(0, 2) 0 2 且 nums[0] nums[2] 1 target(0, 4) 0 4 且 nums[0] nums[4] 0 target 注意 (0, 3) 不计入答案因为 nums[0] nums[3] 不是严格小于 target 。 示例 2
输入nums [-6,2,5,-2,-7,-1,3], target -2 输出10 解释总共有 10 个下标对满足题目描述
(0, 1) 0 1 且 nums[0] nums[1] -4 target(0, 3) 0 3 且 nums[0] nums[3] -8 target(0, 4) 0 4 且 nums[0] nums[4] -13 target(0, 5) 0 5 且 nums[0] nums[5] -7 target(0, 6) 0 6 且 nums[0] nums[6] -3 target(1, 4) 1 4 且 nums[1] nums[4] -5 target(3, 4) 3 4 且 nums[3] nums[4] -9 target(3, 5) 3 5 且 nums[3] nums[5] -3 target(4, 5) 4 5 且 nums[4] nums[5] -8 target(4, 6) 4 6 且 nums[4] nums[6] -4 target
提示
1 nums.length n 50 -50 nums[i], target 50 求解思路实现代码运行结果 ⚡ 模拟 求解思路
通过题目的要求以及给定的数据量直接暴力枚举即可。具体实现代码如下 实现代码
class Solution {public int countPairs(ListInteger nums, int target) {int nnums.size();int cnt0;for(int i0;in;i){for(int ji1;jn;j){if(nums.get(i)nums.get(j)target) cnt;}}return cnt;}
}运行结果 ⚡ 二分 求解思路
题目的顺序对于最终的结果并没有影响所以我们可以先对集合排序然后遍历每一个元素v找到小于target-v最右侧的元素位置。收集答案的过程中需要注意的是如果二分没有找到对应的下标位置还是之前位置的下标此时最终结果不更新相反则需要更新。具体实现代码如下 实现代码
class Solution {public int countPairs(ListInteger nums, int target) {int nnums.size();int cnt0;Collections.sort(nums);for(int i0;in;i){int lefti-1,rightn;while(left1right){int midleftright1;if(nums.get(mid)target-nums.get(i)){leftmid;}else{rightmid;}}if(left!i-1) cnt(left-i);}return cnt;}
}运行结果 共勉
最后我想和大家分享一句一直激励我的座右铭希望可以与大家共勉