牛客刷题-二分查找/排序
提示:以下是本篇文章正文内容,下面案例可供参考
一、二分查找
1.二分查找-I
描述:请实现无重复数字的升序数组的二分查找,给定一个 元素升序的、无重复数字的整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标(下标从 0 开始),否则返回 -1
代码如下(示例):
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* @param nums int整型一维数组
* @param target int整型
* @return int整型
*/
public int search (int[] nums, int target) {
// write code here
if(nums.length == 0){
return -1;
}
int right = nums.length-1;
int left = 0;
while(left <= right){
int mid = (left + right) / 2;
if(nums[mid] > target){
right = mid-1;
}else if(nums[mid] < target){
left = mid + 1;
}else{
return mid;
}
}
return -1;
}
21.旋转数组的最小数字
描述:有一个长度为 n 的非降序数组,比如[1,2,3,4,5],将它进行旋转,即把一个数组最开始的若干个元素搬到数组的末尾,变成一个旋转数组,比如变成了[3,4,5,1,2],或者[4,5,1,2,3]这样的。请问,给定这样一个旋转数组,求数组中的最小值。
代码如下(示例):
方法一:
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型一维数组
* @return int整型
*/
public int minNumberInRotateArray (int[] nums) {
// write code here
int res = nums[0];
for (int i =1; i < nums.length; i++){
res = Math.min(res, nums[i]);
}
return res;
}
方法二:
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型一维数组
* @return int整型
*/
public int minNumberInRotateArray (int[] nums) {
// write code here
int left = 0;
int right = nums.length-1;
while(left < right){
int mid = (left + right) / 2;
if(nums[mid] > nums[mid +1]){
left = mid +1;
}else if(nums[mid] < nums[mid +1]){
right = mid;
}else{
right -= 1;
}
}
return nums[left];
}
该处使用的url网络请求的数据。
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。