当前位置: 首页 > news >正文

成都网站建设138网络顾问

成都网站建设138,网络顾问,昆明pc网站建设,北京网站页面设计2025.1.5 二分查找 1 搜索插入位置 就是简单的二分查找 注意开闭就行 这里有一句话就是nums是升序的 如果他不是严格递增 就是有相同的数字的情况下应该怎么写? int lower_bound(vector<int>& nums, int target) {int left 0, right (int) nums.size() - 1; …

2025.1.5 

二分查找

1 搜索插入位置

就是简单的二分查找 注意开闭就行

这里有一句话就是nums是升序的 如果他不是严格递增 就是有相同的数字的情况下应该怎么写?

  int lower_bound(vector<int>& nums, int target) {int left = 0, right = (int) nums.size() - 1; while (left <= right) { // 区间不为空int mid = left + (right - left) / 2;if (nums[mid] >= target) {right = mid - 1; // 范围缩小到 [left, mid-1]} else {left = mid + 1; // 范围缩小到 [mid+1, right]}}// 循环结束后 left = right+1// 此时 nums[left-1] < target 而 nums[left] = nums[right+1] >= target// 所以 left 就是第一个 >= target 的元素下标return left;}

这是代码!  就是在这里需要更改

2 搜索二维矩阵

第一个方法就是通过两个二分 第一个二分确定在哪一行第二个确定在那一列 这里可以用3的方法一样的

第二个方法就是通过从最后一行第一列开始,每次去除一行或者一列这个简单

3 在排序数组中查找元素的第一个和最后一个位置

我们就是写一个lower_bound (第一个大于等于当前target的元素的下表!)

4搜索旋转排序数组

分组二分查找 

如果[left - mid)他是有序地我们就看target是不是在这中间不是的话left = mid+1(不在的话一定在右侧)

如果(mid,right ] 他是有序地我们就看target是不是在这中间不是的话right = mid-1(不在中间一定是在左侧 )

5

1

就是一个简单的栈的应用

这个就是需要两个stack有一个需要注意的是

   if(s2.empty()||val<=s2.top()) //这里必须<=  

举例子 如果是 -1 0 -1  我们把我们最小的加入应该是 -1 -1 

如果没有等于的话就是 -1  那在原来的stack中进行pop的话 我们判断如果top相同那-1会被去除

那就不对了啊!

链表问题

相交链表 (做出来了)

记住我们set中的find是迭代器的寻找 就是 set.find(..)!=headB.end();这个意思

2 反转链表 

这个题

//想法就是 先弄一个 listNode * pre = null;

while(head!=null)

//标记下来我们当前的下一个 就是index = head->next;

//head->next = pre;

//在这里需要加一个判断就是if(index == null) break;

//pre = head;

//head = index;

为什么呢 如果不加判断我们的这个index ==null之后 head也会变成null所以如果return head->next就错了  所以加这个判断就没问题啦

3 会问链表

很重要这个做错了还是对链表的理解不够透彻!!!、

让 list = head 对list进行倒序

通过while 比较我们是不是相等

这个是很傻逼的!! 因为我list是一个地址 我让list等于 head

那我不就是相当于 对head进行操作了??? 

所以严厉禁止这个想法 !

正确想法很简答 就是把val拿出来放到vector中 通过left right 来比较就行啦 很简单的 

环形链表 (一跟二都很简答)

很简单

两数相加

问题是我要知道链表如何完成串联 !!

如果链表不存在

head = tail = new listnode(sum%10);

如果链表存在 tail = new listnode(sum%10);

tail = tail->next;

 删除链表的倒数第n个

这个题目两个点 第一必须有一个前置指针      ListNode * f3 = new ListNode(0);

让我们的

   ListNode * f1 = f3;

   ListNode * f2 = f3;

然后在是

  f1->next = head;

   f2->next = head;

    f3->next = head;

因为 我们需要把指针移动 n+1 个位置!!  如果单纯的用head 有可能移动到n+1 的那个位置不存在!

第二 我们必须返回的是     return f3->next;

不是head 因为有可能head被删除了!  所以就是不对的!! 

两两交换链表中的节点

重要的是想如何进行下一轮的交换

http://www.shuangfujiaoyu.com/news/3300.html

相关文章:

  • 烟台网页制作福建seo网站
  • 正规做网站百度首页
  • 阿里巴巴做外贸的网站广州最新消息
  • 网站的建立步骤信息流推广
  • 企业自适应网站制作windows优化大师有什么功能
  • 婚庆网站源码java微商软文范例
  • 郫县哪里有做网站的如何做好口碑营销
  • 网站子域名怎么做seo是什么专业的课程
  • 柳州网站建设11百度营销网页版
  • 影业的网站怎么做关键词搜索引擎排名查询
  • 学做软件的网站网站排名优化软件有哪些
  • wordpress拒绝服务seo外链在线提交工具
  • 旅游网站开发方案网站网络推广企业
  • 室内装修装饰设计培训班seo推广的特点
  • 专门做奶粉的网站seo有些什么关键词
  • 怎么做一淘宝客网站吗魔贝课凡seo
  • @wordpress西安seo关键词排名
  • 什么网站必须做三级等保武汉seo推广优化
  • 中山网站制作方案浙江百度查关键词排名
  • 福田产品设计淘宝seo是指什么
  • 打电话沟通做网站话术无锡seo优化公司
  • 网站开发需求说明线上销售水果营销方案
  • cdn如何做网站备案济南网站运营公司
  • 焦作网站建设公司哪家好东莞seo建站公司哪家好
  • wordpress 不显示全文win优化大师有用吗
  • 网站建设包括哪些方面站长seo工具
  • 做网站+广告费+步骤如何进行推广
  • 企业建筑网站有哪些类型有哪些优化关键词排名工具
  • 做网站毕业答辩会问什么河北电子商务seo
  • axure中继器做网站百度官网电话客服24小时