LeetCode|LeetCode 每日一题 [66] 在排序数组中查找数字 I
LeetCode 在排序数组中查找数字 I [简单]
统计一个数字在排序数组中出现的次数。
来源:力扣(LeetCode)示例 1:
链接:https://leetcode-cn.com/problems/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof
输入: nums = [5,7,7,8,8,10], target = 8示例 2:
输出: 2
输入: nums = [5,7,7,8,8,10], target = 6限制:
输出: 0
0 <= 数组长度 <= 50000题目分析
解法1 【LeetCode|LeetCode 每日一题 [66] 在排序数组中查找数字 I】for迭代,因为有序,所以当大于目标数据的时候就结束方法代码实现
解法2 二分法 通过二分法找到目标,然后向两边探测 都结束之后,返回结果
public class SearchTargetNumberCounts {
public static void main(String[] args) {
int[] nums = {2, 2};
int target = 2;
System.out.println(search(nums, target));
System.out.println(search1(nums, target));
}public static int search1(int[] nums, int target) {
if (nums == null || nums.length == 0) {
return 0;
}
int index = Arrays.binarySearch(nums, target);
if (index < 0) {
return 0;
} else {
int res = 1;
int indexLeft = index - 1;
int indexRight = index + 1;
while (indexLeft >= 0 && nums[indexLeft--] == target) {
res++;
}
while (indexRight <= nums.length - 1 && nums[indexRight++] == target) {
res++;
}
return res;
}
}public static int search(int[] nums, int target) {
if (nums == null || nums.length == 0) {
return 0;
}
int res = 0;
for (int i = 0;
i < nums.length;
i++) {
if (nums[i] == target) {
res++;
}
}
return res;
}
}
推荐阅读
- 每日一话(49)——一位清华教授在朋友圈给大学生的9条建议
- 【Leetcode/Python】001-Two|【Leetcode/Python】001-Two Sum
- leetcode|leetcode 92. 反转链表 II
- #2018.4.12#每日一问#+简宁+D03+我是怎样做读书笔记的
- 每日微习惯诞生|每日微习惯诞生 16/100
- 二叉树路径节点关键值和等于目标值(LeetCode--112&LeetCode--113)
- --木木--|--木木-- 第二课作业#翼丰会(每日一淘6+1实战裂变被动引流# 6+1模式)
- LeetCode算法题-11.|LeetCode算法题-11. 盛最多水的容器(Swift)
- 03月30日|03月30日|Day92|每日复盘
- [白雪扇贝每日一句特训班]week5复盘——相信持续的力量