lintcode457. 经典二分查找问题

[一刷]报错了无数遍

一句话思路:对有序整数进行二分查找

问题:

  1. 数组长度有问题,不会表示:就用if (nums.length == 0)就行了。而且corner case要写到方法最前面。
  2. start,end没有初始化。应该初始化,因为是从第0位查找起的,题目中没说.考虑到有0,end=nums.length - 1
  3. 没有定义mid,也要先定义,但是一开始不赋值
  4. 返回的是start end的位置,不是数组的数值nums[start],nums[end]
  5. return-1顶格写,不用else
  6. 花括号各种错,无语

总结:要分清楚角标和数字的关系,先定义角标,最后返回的也是角标

时间: 2024-10-29 10:41:28

lintcode457. 经典二分查找问题的相关文章

JavaSE8基础 经典二分查找问题 折半查找

question: code: public class Solution { /** * @param nums: An integer array sorted in ascending order * @param target: An integer * @return an integer */ public int findPosition(int[] nums, int target) { // Write your code here int start = 0; int end

【从零学习经典算法系列】分治策略实例——二分查找

1.二分查找算法简介 二分查找算法是一种在有序数组中查找某一特定元素的搜索算法.搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束:如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较.如果在某一步骤数组 为空,则代表找不到.这种搜索算法每一次比较都使搜索范围缩小一半.折半搜索每次把搜索区域减少一半,时间复杂度为Ο(logn). 二分查找的优点是比较次数少,查找速度快,平均性能好:其缺点是要求待查表为有序表,且

[经典算法] 二分查找

题目说明: 二分查找法是对一组有序的数字中进行查找,传递相应的数据,进行比较查找到与原数据相同的数据,查找到了返回对应的数组下标,失败返回-1. 题目解析: 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好:其缺点是要求待查表为有序表,且插入删除困难.因此,折半查找方法适用于不经常变动而查找频繁的有序列表. 二分查找可以解决(预排序数组的查找)问题:只要数组中包含T(即要查找的值),那么通过不断缩小包含T的范围,最终就可以找到它.其算法流程如下: 1.一开始,范围覆盖整个数组. 2

【经典算法——查找】二分查找

二分查找又称为折半查找,仅适用于事先已经排好序的顺序表.其查找的基本思路:首先将给定值K,与表中中间位置元素的关键字比较,若相等,返回该元素的存储位置:若不等,这所需查找的元素只能在中间数据以外的前半部分或后半部分中.然后在缩小的范围中继续进行同样的查找.如此反复直到找到为止.算法如下: 1 template<typename T> 2 int BinarySearch(vector<T> &data, T key) { 3 int low = 0, high = data

(经典) K&amp;R的名著&lt;&lt;C程序设计语言&gt;&gt;二分查找

#include<stdio.h> //查找成功则返回所在下标否则返回-1 int binsearch(int A[], int n,int a) { int low, high, mid; low = 0; high = n -1; while ( low <= high) { /// 这里必须是 <= mid = (low+high) / 2; if (A[mid] == a) return mid; else if(A[mid]<a) low = mid +1; els

ZOJ 3640--Missile【二分查找 &amp;&amp; 最大流dinic &amp;&amp; 经典建图】

Missile Time Limit: 2 Seconds      Memory Limit: 65536 KB You control N missile launching towers. Every tower has enough missiles, but for each tower only one missile can be launch at the same time. Before the launching, every missile needT1 seconds

经典算法二分查找循环实现Java版

二分查找 定义 二分查找(Binary Search)又称折半查找,它是一种效率较高的查找方法. 要求 (1)必须采用顺序存储结构 (2)必须按关键字大小有序排列 查找思路 首先将给定值K,与表中中间位置元素的关键字比较,若相等,返回该元素的存储位置:若不等,这所需查找的元素只能在中间数据以外的前半部分或后半部分中.然后在缩小的范围中继续进行同样的查找.如此反复直到找到为止. 适用情况 该查找方法仅适合于线性表的顺序存储结构,不适合链式存储结构,且要求元素按关键字有序排列. 优缺点 虽然二分查找

经典算法系列之:二分查找

1.前言 算法,在计算机中的地位,就相当于人类大脑的决策中枢系统,哪怕最简单的算法,其精妙的思维方式,都可以让人开启一扇新的视窗. 算法,它不仅仅只是狭义的用来解决计算机科学领域的问题,更是一种"思维方式".算法思维,是一种深度思考和创造的过程. 算法,只有真正理解了,而不只是所谓的知道,并将应用到生活.工作.学习等各个方面,它将一定使人受益终生. 2.原理推导 二分查找,前提是在排好序的基础上,每次查找,将数据集合分成两个部分,取中间索引数值与被查找的数值比较,逐次缩小查找范围,直到

二分查找算法

提到查找算法,最经典的就是二分查找算法了.在二分查找时要在有序的数据里查找目标target,先取中间元素与target比较, 当target小于中间元素的时候,则搜索数组的前半部分,target大于中间元素时,则取数组的后半部分.重复整个搜索的过程 将左半部分与有半部分当作子数组继续查找,直到找到元素或到子数组的大小为0停止. 原理上很简单却有较多细节,尤其是数据边界的取值是否会越界,while循环的条件. java code: public class BinarySearchDemo { p