C/C++ 二分查找面试算法题
1.二分查找(有序数组)
https://blog.csdn.net/qq_63918780/article/details/122527681
1 #include <stdio.h>2 #include <string.h>3 4 int func(int *a,int j,int x)5 {6 int len = j - 1,i = 0,min;7 while(i<len)8 {9 min = (i+len)/2;
10 if(a[min] > x)
11 {
12 len = min-1;
13 }
14 else if(a[min] < x)
15 {
16 i = min+1;
17 }
18 else
19 {
20 break;
21 }
22 }
23 return min;
24 }
25
26 int main()
27 {
28 int j,x,num;
29 int a[] = {1,2,3,4,5,6,7,8,9};
30 printf("输入要查找的数\n");
31 scanf("%d",&x);
32 j = sizeof(a)/sizeof(a[0]);
33 num = func(a,j,x);
34 printf("要查找的数为a[%d]\n",num);
35
36 return 0;
37 }
2.搜索二维矩阵
https://blog.csdn.net/qq_47406941/article/details/110091759
编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:
-
每行中的整数从左到右按升序排列。
-
每行的第一个整数大于前一行的最后一个整数。
1 #include <stdio.h>2 3 #define N 34 #define M 45 6 int main()7 {8 int x,i = 0,j = M -1;9 int a[N][M] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
10 printf("输入一个要查找的数\n");
11 scanf("%d",&x);
12 while(1)
13 {
14 if(x == a[i][j])
15 {
16 printf("找到了\n");
17 break;
18 }
19 else if(x > a[i][j])
20 {
21 if(i < N-1)
22 {
23 i++;
24 }
25 else
26 {
27 printf("没找到\n");
28 break;
29 }
30 }
31 else
32 {
33 if(j > 0)
34 {
35 j--;
36 }
37 else
38 {
39 printf("没找到\n");
40 break;
41 }
42 }
43 }
44
45 return 0;
46 }
3.旋转数组最小数
把一个数组的最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。
例如,数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。
https://blog.csdn.net/weixin_43804406/article/details/107956124
1 #include <stdio.h>2 #include <string.h>3 4 int top(int *a,int len)5 {6 int i,j = a[0];7 for(i = 0;i<len;i++)8 {9 if(j > a[i])
10 {
11 return a[i];
12 }
13 }
14 return -1;
15 }
16
17 int func(int *a,int len)
18 {
19 int i = 0,j = len - 1,min;
20 while(i<=j)
21 {
22 min = (i+j)/2;
23
24 if(a[min] == a[i] && a[min] == a[j])
25 {
26 return top(a,len);
27 }
28
29 if(a[min] > a[i])
30 {
31 i = min+1;
32 }
33 else if(a[min] < a[j])
34 {
35 j = min-1;
36 }
37 else
38 {
39 break;
40 }
41 }
42 return a[min];
43 }
44
45 int main()
46 {
47 int a[] = {3,4,5,1,2};
48 int len = sizeof(a)/sizeof(a[0]);
49 int i = func(a,len);
50 printf("%d\n",i);
51
52 return 0;
53 }
4.搜索旋转排序数组
https://blog.csdn.net/jakercl/article/details/125586657
整数数组 nums 按升序排列,数组中的值互不相同 。
在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了旋转,
使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]](下标从 0 开始计数)。
例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2] 。
给你旋转后的数组 a 和一个整数 x,如果 nums 中存在这个目标值 x ,则返回它的下标,否则返回 -1 。
必须设计一个时间复杂度为 O(logn) 的算法解决此问题
1 #include <stdio.h>2 #include <stdlib.h>3 4 #define N 95 6 int func(int a[])7 {8 int i = 0,j = N-1,min,x;9 printf("输入要查找的数字\n");
10 scanf("%d",&x);
11 while(i<=j)
12 {
13 min = (i+j)/2;
14 if (a[min] == x)
15 {
16 return min;
17 }
18 if (a[i] <= a[min]) //如果左半区间有序
19 {
20 if (a[i] <= x && x < a[min])//目标值在左侧
21 {
22 j = min - 1;
23 }
24 else//目标值在右侧
25 {
26 i = min + 1;
27 }
28 }
29 else
30 { //如果右半区间有序
31 if (a[min] < x && x <= a[j])//目标值在右侧
32 {
33 i = min + 1;
34 }
35 else//目标值在左侧
36 {
37 j = min - 1;
38 }
39 }
40 }return -1;
41 }
42
43 int main()
44 {
45 int a[N] = {5,6,7,8,9,1,2,3,4};
46 int i = func(a);
47 printf("输入的数字的坐标为a[%d]\n",i);
48
49 return 0;
50 }
5.搜索插入位置
https://blog.csdn.net/m0_61465701/article/details/122599140
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
示例 1:
输入: nums = [1,3,5,6], target = 5
输出: 2
示例 2:
输入: nums = [1,3,5,6], target = 2
输出: 1
示例 3:
输入: nums = [1,3,5,6], target = 7
输出: 4
示例 4:
输入: nums = [1,3,5,6], target = 0
输出: 0
示例 5:
输入: nums = [1], target = 0
输出: 0
1 #include <iostream>2 #include <vector>3 using namespace std;4 5 class node{6 public:7 int searchinsert(vector<int>& nums,int target){8 int l = 0,r = nums.size() - 1;9 while(l<r){
10 int mid = l + (l+r)/2;
11 if(nums[mid]>=target) r = mid;
12 else l = mid +1;
13 }
14 return r;
15 }
16 };
17
18 int main()
19 {
20 node n;
21 vector<int> cur = {1,2,4,6,8,9};
22 cout << n.searchinsert(cur,3) << endl;
23
24 return 0;
25 }
6.c++实现X的平方根(力扣69题)
1 #include <iostream>2 using namespace std;3 4 class node1{5 public:6 int mysqrt(int x){7 int l = 0,r = x;8 while(l<r){9 int min = l + (r-l)/2 +1;
10 if(min*min <= x) l = min;
11 else r = min -1;
12 }
13 return l;
14 }
15 };
16
17 int main()
18 {
19 int x = 6;
20 node1 n;
21 cout << n.mysqrt(x) << endl;
22
23 return 0;
24 }
相关文章:
C/C++ 二分查找面试算法题
1.二分查找(有序数组) https://blog.csdn.net/qq_63918780/article/details/122527681 1 #include <stdio.h>2 #include <string.h>3 4 int func(int *a,int j,int x)5 {6 int len j - 1,i 0,min;7 while(i<len)8 {9 …...
Linux基本指令(上)——“Linux”
各位CSDN的uu们好呀,今天,小雅兰的内容是Linux啦!!!主要是Linux的一些基本指令和Linux相关的基本概念(系统层面),下面,让我们进入Linux的世界吧!!…...
XSS详解
XSS一些学习记录 XXS短标签、属性、事件、方法短标签属性事件函数弹窗函数一些对于绕过有用的函数一些函数使用payload收集 浏览器编码问题XML实体编码URL编码JS编码混合编码 一些绕过方法利用constructor原型污染链构造弹框空格绕过圆括号过滤绕过其他的一些绕过 参考 XXS短标…...
【图论】判环问题
(未更新完、做到相关题再更新相关部分 文章目录 无向图判断有无环并输出环上点 无向图判断有无环并输出环上点 例题:H. Mad City 利用变种拓扑排序,先把度为1的点存入队中,每次取出队头,遍历邻接点,再将该…...
将3D MAX设计模型导入NX1988
将3D MAX设计模型导入NX1988 概述导入流程导出喜欢的模型对模型进行修改模型贴图 概述 一般家装设计都不会用NX之类的产品设计软件,也没有通用的文件格式可以互相转换,本文的目的是将从网上下载的一些设计较好的3D MAX模型导入到NX软件中借用࿰…...
操作系统原理实验三:页面调度算法程序
实验三:页面调度算法程序 课程名称:操作系统原理 项目名称:页面调度算法程序 实验(实训)类型:验证性实验 实验(实训)课时:2 [目的和要求] 目的: 加深对请…...
QT实现tcp服务器客户端
服务器.cpp #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//实例化一个服务器server new QTcpServer(this);// 此时,服务器已经成功进入监听状态…...
tcp拥塞控制原理
18.3 拥塞控制 我们在向对端发送数据时,并不是一股脑子任意发送,因为TCP建立连接后,就是建立了一根管道,这跟管道上,实际上有很多的工作设备,比如路由器和交换机等等,他们都会对接收到的TCP包进…...
【C++设计模式之简单工厂模式】分析及示例
简介 简单工厂模式是一种常见的设计模式,用于创建多种相似对象的实例,属于创建型。 它通过一个工厂类来解耦客户端代码和对象的创建过程,使得客户端无需直接和具体的产品类交互,而只需要通过工厂类获取所需的产品实例即可。 原理…...
云原生定义整理
云原生定义整理 Pivotal 是云原生应用的提出者,并推出了 Pivotal Cloud Foundry 云原生应用平台和 Spring 开源 Java 开发框架,成为云原生应用架构中先驱者和探路者。 Pivotal最初的定义 Pivotal公司的Matt Stine在2015年写了一本叫做<<迁移到云…...
华硕X555YI, Win11下无法调节屏幕亮度
翻出一个旧电脑华硕X555YI,装Win11玩,已经估计到会有一些问题。 果然,装完之后,发现屏幕无法调节亮度。试了网上的一些方法,比如修改注册表等,无效。 估计是显卡比较老,哪里没兼容。然后用驱动…...
踩坑 | vue动态绑定img标签src属性的一系列报错
文章目录 踩坑 | vue项目运行后使用require()图片也不显示问题描述vue中动态设置img的src不生效问题的原因require is not defined 解决办法1:src属性直接传入地址解决办法2 踩坑 | vue项目运行后使用require()图片也不显示 问题描述 在网上查阅之后,发…...
强化学习环境 - robogym - 学习 - 1
强化学习环境 - robogym - 学习 - 1 项目地址 https://github.com/openai/robogym 为什么选择 robogym 自己的项目需要做一些机械臂 table-top 级的多任务操作 robogym 基于 mujoco 搭建,构建了一个仿真机械臂桌面物体操作(pick-place、stack、rearr…...
如果在 Mac 上的 Safari 浏览器中无法打开网站
使用网络管理员提供的信息更改代理设置。个人建议DNS解析,设置多个例如114.114.114.114 8.8.8.8 8.8.4.4 如果打不开网站,请尝试这些建议。 在 Mac 上的 Safari 浏览器 App 中,检查页面无法打开时出现的信息。 这可能会建议解决问题的…...
力扣练习——链表在线OJ
目录 提示: 一、移除链表元素 题目: 解答: 二、反转链表 题目: 解答: 三、找到链表的中间结点 题目: 解答: 四、合并两个有序链表(经典) 题目: 解…...
四、互联网技术——局域网拓扑结构
文章目录 一、局域网拓扑结构二、虚拟局域网VLAN三、交换机VLAN划分四、VLAN的作用五、交换机的端口类型六、经典三层网络架构七、例题:局域网带宽利用分析八、网络安全基础九、恶意软件十、防火墙与入侵检测技术 一、局域网拓扑结构 局域网的主要特征由网络的拓扑结构、所采用…...
Spring Webflux DispatcherHandler源码整理
DispatcherHandler的构造(以RequestMappingHandlerMapping为例) WebFluxAutoConfiguration中EnableWebFluxConfiguration继承WebFluxConfigurationSupportBean public DispatcherHandler webHandler() {return new DispatcherHandler(); }DispatcherHandler#setApplicationCon…...
【Netty】ByteToMessageDecoder源码解析
目录 1.协议说明 2.类的实现 3.Decoder工作流程 4.源码解析 4.1 ByteToMessageDecoder#channelRead 4.2 累加器Cumulator 4.3 解码过程 4.4 Decoder实现举例 5. 如何开发自己的Decoder 1.协议说明 Netty框架是基于Java NIO框架,性能彪悍,支持的协…...
DevEco Studio设置Nodejs提示路径只能包含英文、数字、下划线等
安装DevEco Studio 3.1.1 Release 设置Nodejs路径使用nodejs默认安装路径 (C:\Program Files\nodejs) 提示只能包含英文、数字、下划线等 , 不想在安装nodejs请往下看 nodejs默认路径报错 修改配置文件 1、退出DevEco Studio 2、打开配置文件 cmd控制台…...
大模型 Decoder 的生成策略
本文将介绍以下内容: IntroductionGreedy Searchbeam searchSamplingTop-K SamplingTop-p (nucleus) sampling总结 一、Introduction 1、简介 近年来,由于在数百万个网页数据上训练的大型基于 Transformer 的语言模型的兴起,开放式语言生…...
欧盟EU 10/2011与LFGB的差异对比
欧盟EU 10/2011与LFGB的差异对比分析如下:一、法规定位与适用范围EU 10/2011定位:欧盟塑料食品接触材料的核心法规,属于《欧盟框架法规 (EC) No 1935/2004》的专项实施细则。适用范围:涵盖所有塑料材料及制品(包括多层…...
Java程序员面试前请多刷题!
这么说吧,你是个手艺不错的厨子,平时炒菜炖汤都没问题。但突然通知你要去参加一个“厨王争霸赛”,比赛规则是:给你半小时,现场抽一道经典菜,比如鱼香肉丝或者开水白菜,让你立刻复原出来。 你懵…...
找个大家都不累的见面地点:从“最佳聚会点”聊聊算法里的中位数智慧
找个大家都不累的见面地点:从“最佳聚会点”聊聊算法里的中位数智慧 作者:Echo_Wish 一、引子:现实生活里的一个小难题 不知道你有没有遇到过这种情况。 几个朋友准备线下聚会,但大家住在城市不同位置: 有人住城东 有人住城西 有人住城南 于是群里就会出现经典问题: “…...
政府办公助手智能体系统建设调研报告
执行摘要 2024-2025年,政府AI助手行业进入规模化部署阶段。以DeepSeek为代表的国产大模型在政务领域实现快速普及,全国已有320个地区和部门接入主流大模型。深圳福田区、中山市、杭州市余杭区等地涌现出一批标杆案例,公文处理效率提升90%&am…...
从0到1复刻“龙虾员工”:用OpenClaw+百度DuClaw在1天内搭建可报销的AI助理
文章目录一、先别急着"养虾",搞清楚这只"小龙虾"到底能干啥二、DuClaw不是"阉割版",而是"外卖版"三、实战:用1天养一只"报销助理"3.1 注册与环境准备3.2 让AI学会"看发票"3.3 接…...
UG NX中快速摆正零件视角的几种常用方法
你可以通过选择平面后按 F8 来实现特定视角的摆正。 特征过滤器通常用于选择特定类型的几何体(如面、边、体),但在“摆正视角”这个操作中,更准确的说法是利用面的法向。 以下是UG NX中快速摆正零件视角的几种常用方法,从基础到进阶: 1. 基础方法:…...
从此告别拖延!人气爆表的降AIGC网站 —— 千笔·降AIGC助手
在AI技术席卷学术写作的今天,越来越多的学生、研究人员和职场人士选择借助AI辅助完成论文、报告和学术材料。然而,随之而来的“AI率超标”问题却成为横亘在学术道路上的隐形障碍——知网、维普、万方等主流查重系统纷纷升级算法,严打AI生成内…...
二分查找看这篇就够了!Java 版超详细讲解+高频题解
二分查找看这篇就够了!Java 版超详细讲解高频题解 大家好,今天我们来彻底吃透二分查找。作为算法面试、笔试中的“常青树”,它是必考且基础的核心知识点,看似只有“左右指针中间值对比”这一个简单逻辑,但实际应用中&a…...
Vibe Coding 踩了 84 亿 Token 的坑之后,我总结了这 8 条生存法则
你的 Vibe Coding 为什么总在最后 20% 崩掉? 相信你有过这种体验: 开局顺滑,AI 刷刷刷地出代码,感觉自己要起飞了。到了项目中后期,Bug 开始出现,你让 AI 修,它修完这里坏那里;再修&…...
RexUniNLU惊艳效果展示:繁体中文与简体混排文本的实体识别精度
RexUniNLU惊艳效果展示:繁体中文与简体混排文本的实体识别精度 1. 引言:当繁体遇见简体,AI如何应对? 在日常的文本处理中,我们经常会遇到这样的情况:一篇文档中同时包含简体中文和繁体中文,甚…...
