Total Occurrence of Target
程序员文章站
2022-05-05 18:03:52
...
Given a target number and an integer array sorted in ascending order. Find the total number of occurrences of target in the array.
Example
Example1:
Input: [1, 3, 3, 4, 5] and target = 3,
Output: 2.
Example2:
Input: [2, 2, 3, 4, 6] and target = 4,
Output: 1.
Example3:
Input: [1, 2, 3, 4, 5] and target = 6,
Output: 0.
Challenge
Time complexity in O(logn)
思路:先find到target index,如果-1直接return 0.否则再统计;
public class Solution {
/**
* @param A: A an integer array sorted in ascending order
* @param target: An integer
* @return: An integer
*/
public int totalOccurrence(int[] A, int target) {
if(A == null || A.length == 0) {
return 0;
}
int i = findLastIndex(A, target);
if(i == -1) {
return 0;
}
int count = 0;
while(i >= 0) {
if(A[i] == target){
count++;
i--;
} else {
break;
}
}
return count;
}
private int findLastIndex(int[] A, int target) {
int start = 0; int end = A.length - 1;
while(start + 1 < end) {
int mid = start + (end - start) / 2;
if(A[mid] <= target) {
start = mid;
} else {
end = mid;
}
}
if(A[end] == target) {
return end;
}
if(A[start] == target){
return start;
}
return -1;
}
}
上一篇: C# 多线程 Invoke BeginInvoke
下一篇: C#中的多线程 - 高级多线程
推荐阅读
-
【eclipse】Target runtime Apache Tomcat v7.0 is not defined解决
-
php disk_free_space与disk_total_space 函数_PHP教程
-
Total Commander基础教程(图文详解)
-
ORA-00845: MEMORY_TARGET not supported on this system报错解决
-
算法题:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
-
css:Media Queries: How to target desktop, tablet and mobile?
-
ES6函数细节干货(包括arguments,new.target,箭头函数)
-
用好href的target属性
-
iOS使用Target如何快速科学的区分开发环境详解
-
IOS中的target action控件的实现