【笔试总结】经典二分查找

经典c语言笔试题 ***********************************************************************************************************************************                             编程区:                      《《《《冒泡排序,二分查找 阅读详情

目标:分别写一段查找大数组查找某个数字出现字数的方法,这里给出本人的代码

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class SearchArray {

    /**
     * 二分法查找(每次将数组分为两段),针对有序列表可用,时间复杂度为O(logN)。
     * @param array     目标(待查)数组
     * @param target    目标值
     * @return      目标值出现次数
     */
    public int binarySearch(List<Integer> array, int target) {
        int length = array.size();
        int middle = length/2;
        int middle_item = array.get(middle);
        if (middle_item > target) {
            //TODO:  向左查找(递归)
            return binarySearch(array.subList(0, middle), target);
        } else if (middle_item < target) {
            //TODO: 向右查找(递归)
            return binarySearch(array.subList(middle, length), target);
        } else {
            //TODO: 左右查找
            List<Integer> leftArray = array.subList(0, middle);
            List<Integer> rightArray = array.subList(middle, length);
            int count = 0;
            for (int i = leftArray.size()-1; i > 0; i--) {
                int leftItem = leftArray.get(i);
                if (leftItem == target) {
                    count++;
                } else {
                    break;
                }
            }
            for (int j = 0; j < rightArray.size(); j++) {
                int rightItem = rightArray.get(j);
                if (rightItem == target) {
                    count++;
                } else {
                    break;
                }
            }
            return count;
        }
    }



    public static void main(String[] args) {
        SearchArray sa = new SearchArray();
        // 有序列表查找
        List<Integer> orderlyArray = new ArrayList(Arrays.asList(1, 2, 3, 3, 3, 3, 4, 5, 6, 7, 7, 8, 9));
        System.out.println(sa.binarySearch(orderlyArray, 3));
        System.out.println(sa.binarySearch(orderlyArray, 7));
    }
}

以上是本人代码以及测试部分,有更加快速或精简版本的还望大神指正。

Java程序员面试需要注意啥?面试常见手撕模板题以及笔试模板总结 本文转载自:Java程序员面试需要注意啥?面试常见手撕模板题以及笔试模板总结 一. 目录 排序 二分 二叉树非递归遍历 01背包 最长递增子序列 最长公共子序列 最长公共子串 大数加法 大数乘法 大数阶乘 全排列 子集 N皇后 并查集 树状数组 线段树 字典树 单调栈 单调队列 KMP Manacher算法 拓扑排序 最小生成树 最短路 欧拉回路 GCD和LCM 素数筛法 唯一分解定理 乘法快... 阅读详情

相关推荐

拼多多笔试题——算法岗

示例 1:12 输入: num1 = "2", num2 = "3"输出: "6"示例 2:12 输入: num1 = "123", num2 = "456"输出: "56088"

FPGA/MATLAB学习教程/源码/项目合作开发 1163

【Go】 最长连续递增序列 #数组 Easy

给定一个未经排序的整数数组,找到最长且连续的的递增序列。 输入: [1,3,5,5,4,17] , 输出: 3 , 解释: 最长连续递增序列是 [1,3,5], 长度为3。 输入: [2,2,2,2,2] , 输出: 1 , 解释: 最长连续递增序列是 [2], 长度为1。 注意:数组长度不会超过10000。 解法一: 右边大于左边才算递增,等于和小于都不是递增 遍历一次就知道答...

大白菜啊 732

游戏服务端开发工程师部分笔试题 - 解析

牛牛的通勤路上有两种选择,要么走路,要么打车,牛牛走路的速度是1m/s。打车的速度的10m/s,但是打车需要等出租车10s,请你计算牛牛想尽快到公司应该选择打车还是走路。给定一个元素升序的、无重复数字的整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标(下标从0开始),否则返回-1。:C选项正确的写法是 int[] a = new int[]{1, 2, 3, 4, 5};输出牛牛想尽可能快到公司应该选择打车还是走路,走路的话输出w,打车的输出v。

博客 770

五分钟学算法之经典算法题:二分查找(某东校园招聘笔试真题)

今天分享一道简单的笔试题,题目来源于京东校园招聘笔试真题。你做出这道简单的题目需要花费多少东呢? 题目描述 有一个有序表为 {1,5,8,11,19,22,31,35,40,45,48,49,50} ,当二分查找值为 48 的结点时,查找成功需要比较的次数( ) A、4 B、3 C、2 D、1 ...

程序员吴师兄的博客 468

华为研发岗笔试面试高频考点精讲与真题实战

成功设计DP算法的关键在于正确的状态定义和合理的状态转移逻辑。以下是通用构建流程:graph TDA[明确问题目标] --> B[寻找最优子结构]B --> C[定义状态含义]C --> D[写出状态转移方程]D --> E[确定边界条件]E --> F[选择遍历顺序]F --> G[实现代码并验证]dp[i][w]:前i个物品在容量w下的最大价值。dp[i][j]s1[:i]与s2[:j]的LCS长度。

weixin_33622085的博客 1485

Halcon 20.11在WPF中的交互式绘图:完整实现矩形ROI的创建、拖动与坐标获取

本文详细介绍了如何在WPF框架下利用Halcon 20.11实现交互式矩形ROI的创建、拖动与坐标获取。通过HDrawingObject和HSmartWindowControlWPF控件,开发者可以高效构建机器视觉应用,提升项目实战中的开发效率。文章涵盖环境配置、事件处理、坐标获取及性能优化等关键内容。

weixin_29266007的博客 427

对长度为200的有序表进行二分查找_五分钟学算法之经典算法题:二分查找(某东校园招聘笔试真题)...

今天分享一道简单的笔试题,题目来源于京东校园招聘笔试真题。你做出这道简单的题目需要花费多少东呢?题目描述有一个有序表为 {1,5,8,11,19,22,31,35,40,45,48,49,50} ,当二分查找值为 48 的结点时,查找成功需要比较的次数( )A、4B、3C、2D、1题目分析一道送分题。有序表的长度为 13,根据 二分查找法 查找数的特性,每次都 n/2 进行折半查找。13 / 2...

weixin_26965807的博客 2519

liquibase扩展支持达梦数据库

近期项目中需要支持国产数据库,需要liquibase底层支持达梦数据库,记录下操作的详细步骤以便分享。 1.liquibase支持的数据库很多如MySQL, PostgreSQL, Oracle, Sql Server, DB2。但是达梦数据库并不支持,所以需要新建DMDatabase类来适配达梦数据库。达梦语法和Oracle很像所以只需要复制liquibase-core下的Oracle Database做些修改就可了。以下为需要修改的地方 public class DMDatabase extends A

qq_43677719的博客 5472

昨夜阿里实习生笔试:印象深刻的几道题

缘由 昨晚去阿里巴巴的北邮考场参加笔试:今年的实习生。有几道题让我印象深刻。暂时记录于此。沿路和一个在北邮读过硕的同学聊了聊,说北邮很有计算机氛围,而且自习室经常爆满,为了抢座还有打架的。虽然别人打架的原因不调查不能妄下结论,不过北邮学计算机的氛围真是让我好生羡慕。 过桥题 题干 甲、乙、丙、丁四个人过桥,分别需要1分钟,2分钟,5分钟,10分钟。因为天黑,必须借助于手电筒过桥,可

zy825316的专栏 2481

Python爬虫(一)京东商品价格及详情页抓取

这是一个以http://item.jd.com/2957726.html为例的单网页抓取案例 import urllib.request; #载入urllib.request,用于获取页面html源代码 from pandas import Series; #载入series包 from pandas import DataFrame; #载入dataframe包 from bs4 impo

Data Proc 1万+

l0phtcrack 7(爆破管理员密码)使用教程

l0phtcrack7简称lc7,是爆破计算机管理员密码的软件,早期是网络安全管理员用来检测系统用户是否使用了不安全的密码,后被黑客用于用户口令破解 功能:该工具支持远程破解,理论上能破解所有密码,但对复杂度比较高的密码,破解时间很长 使用前提:1.登录了需要破解的计算机 2.知道需要破解的计算机的一个管理员的账户,密码 ** 也许你会疑惑,我都知道了一个管理员账户密码了,还要另外的管理员密码...

Xiongcanne的博客 2万+

收藏!90 个名企笔试题 + 算法题

(点击上方公众号,可快速关注)节选自「算法爱好者」微信公号的精选算法题和名企笔试题。长按上图,弹出“识别二维码”后关注提示:点击下方目录,即可查看题目详情,并查看网友的讨论交流。名企笔试名企笔试:美团2016招聘笔试(股票交易日)名企笔试:搜狐2016招聘笔试题(扎金花)名企笔试:凤凰网2015招聘(二分查找)名企笔试:4399游戏校招笔试题(快速排序)名企笔试:蘑菇街2016招聘笔试(回文串)名...

hello world! 942

claude使用教程

提供了三种模型:claude,codex, gemini,三种模型都共用同一个apikey, 有开发需求使用claude效果较好,知识问答等场景gemini效果会更好些,本文只提供了claude的安装方式,剩下两种按需按照以下参考链接安装下即可,安装有问题参考文档:https://www.aicodemirror.com/dashboard/official-installation/macos-linux (不需要挂梯子,自己手机号注册就好)

lichao19871216的博客 3502

经典公司java笔试编程题题_经典笔试编程题--Java实现

转载自经典笔试编程题--Java实现1.输入一个正数n,输出所有和为n的连续正数序列。分析:设定两个指针,min指向和为n的连续正数序列的最小值,max指向和为n的连续正数序列最大值。sum表示真正的和。初始情况下,min、max和sum 都指向1.当sum小于n时,max++;当sum大于n时,min++;当sum等于n时,输出整个序列。public class a {public stat...

weixin_28900463的博客 863

基于dify平台批量分析excel格式信息

如何以表格形式批量输入一些信息,然后让大模型以对话应用形式逐条进行推理分析?请逐行分析以下数据,给出推理结果:{{input}}这里提供一个分步解决方案,结合。

knightissocool的博客 8011

uniapp微信小程序 - 解决苹果ios底部输入框被软键盘遮挡的问题,input/textarea底部输入框被弹出的软键盘挡住部分或全部遮住(解决uniApp小程序底部输入框,键盘弹起时页面整体上移

uniapp: IOS微信小程序输入框部分被软键盘遮挡问题,iOS微信小程序键盘弹出时输入框被挡住,uniapp小程序苹果IOS系统软键盘唤起导致底部输入框被遮挡的问题,ios 键盘弹出input输入框被遮挡,uniapp textarea输入框软键盘遮挡问题,苹果手机ios系统,解决uni-app微信小程序底部输入框,键盘弹起时页面整体上移 问题,关于手机端IOS系统微信中虚拟键盘遮挡input输入框问题的解决方案,uniapp使用输入框固定在底部键盘弹起把输入框挡住问题,安卓上没问题就苹果不行,仅ios

🏆 前端领域优质创作者 5597

笔试算法题——持续更新中

自用笔记,用来记录进度

weixin_65528013的博客 379

手把手入门YOLO到改进优化教程 | 【P1基础篇】YOLOv8网络架构原理

本节先来学习基础知识,以YOLOv8进行讲解入门, 拿YOLOv8入手掌握YOLO的底层逻辑 ,也可以基于此来轻松学习后面更新的YOLO系列 (大部分YOLO版本的核心思想一致,更新是基于旧版本做结构升级、优化策略,学习成本会越来越低)。

嵌入式阿齐Archie 2万+

360笔试题

#include <iostream> #include <vector>using namespace std;void bubbleSort(vector<int>& toBeSortedNums){ for (int i = 0; i < toBeSortedNums.size(); i++){ for (int j = 0; j < toBeSortedNums.si

lemonaha的博客 642

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

重拾C++经典笔试30题(21-30)

重拾C++经典笔试30题(21-30) 1.       为什么Delete会出错? class CBase { public: CBase() { cout <<"CBase" << endl; } virtual ~CBase() { cout <<"~CBase" << endl;} }; classCDerived : public CBas

铭毅天下Elasticsearch 3691

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

经典笔试题-使用二分查找法找字符串数组{"a","b","c","d","e","f","g","h"}中"g"元素

代码示例 public class Query4Half { static int bsearch( String[] a, String v ) { int l, r; l = 0; r = a.length-1; while ( l <= r ) { int m = (l+r)/2; if ( a[m].compareTo(v)==0 ) r...

逍遥云恋 1489

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

程序员笔试面试算法题系列--数组

题目来源于《程序员面试笔试宝典》、各大博客以及历年真题,供大家查漏补缺。(持续更新中) 1 递归实现数组求和 void Sum(int a[],int n,double& sum)每次递归,在sum上累加,同时n自减,当n 2 利用一个for循环打印二维与三维数组  double total=row*col; for(int k=0;k<total;k++) { printf("%d

XIANG__jiangsu的专栏 780

Google 2012笔试题拆解:从二分查找、动态规划到LRU的算法内功

算法面试向来是检验开发者工程能力与思维深度的试金石,而经典笔试题目往往承载着最核心的计算机科学原理。从二分查找的边界条件出发,我们可以理解时间复杂度如何驱动优化;动态规划的逆向递推则揭示了问题建模的灵活性;LRU缓存的设计融合了哈希表与双向链表,体现了数据结构选型对系统性能的关键作用。这些基础概念不仅是大厂面试的高频考点,更直接应用于操作系统页面置换、数据库缓冲池及日志检索等真实工程场景。掌握它们的原理和工程实践价值,有助于开发者构建从暴力解到最优解的完整思维链路。本文以一套流传至今的经典笔试卷为载体,逐层

weixin_30460489的博客 450

美团研发笔试算法题拆解:数据结构与动态规划核心考点精讲

在互联网公司技术笔试中,数据结构与算法始终是衡量候选人基本功的核心标尺。从数组遍历到哈希表设计,从动态规划状态转移到二叉树层次遍历,每一类题型背后都对应着明确的工程思维与底层原理。以LRU缓存机制为例,它融合了哈希表O(1)查找与双向链表O(1)更新的特性,这种协同设计在Redis内存管理、数据库缓冲池等真实场景中均有广泛应用。同样,最大连续子数组和的Kadane算法看似简单,却能延伸到股票收益分析、信号峰值检测等实际问题。理解这些技术的设计初衷,掌握边界条件处理与复杂度优化方法,不仅是为了应对笔试,更是为

weixin_33901641的博客 351

爱奇艺2020校招算法笔试高频考点与真题解析

算法基础是技术面试的核心竞争力,尤其在互联网大厂校招中,笔试环节往往通过经典题型考察候选人的编码基本功、逻辑思维和边界意识。掌握排序、二分查找、KMP、动态规划等核心算法,以及机器学习基础概念,是应对算法岗笔试的关键。从原理层面理解每个算法的适用场景与复杂度,能够帮助候选人在限时环境中快速识别题型并选择最优解法。这些知识不仅在笔试中重要,在视频推荐、搜索排序等实际业务场景中同样具有直接应用价值。本文以爱奇艺2020校招算法方向笔试题为例,拆解高频考点与真题思路,为准备算法岗笔试的应届生和跳槽工程师提供系统复

weixin_32308101的博客 297
上一篇: 【快速开始】vuejs环境搭建&第一个项目
下一篇: 【深度学习】AMDET文章翻译及个人感悟
黑符石
博客等级 码龄10年 489粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑符石

感谢小主对原创的大力支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值