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

与数组相关经典面试题

𝙉𝙞𝙘𝙚!!👏🏻‧✧̣̥̇‧✦👏🏻‧✧̣̥̇‧✦ 👏🏻‧✧̣̥̇:Solitary-walk

      ⸝⋆   ━━━┓
     - 个性标签 - :来于“云”的“羽球人”。 Talk is cheap. Show me the code
┗━━━━━━━  ➴ ⷯ

本人座右铭 :   欲达高峰,必忍其痛;欲戴王冠,必承其重。

👑💎💎👑💎💎👑 
💎💎💎自💎💎💎
💎💎💎信💎💎💎
👑💎💎 💎💎👑    希望在看完我的此篇博客后可以对你有帮助哟

👑👑💎💎💎👑👑   此外,希望各位大佬们在看完后,可以互赞互关一下,看到必回
👑👑👑💎👑👑👑


一:原地移除指定的元素值

题目:

思路讲解:

我们以此数组为例:

1:首先定义2个变量 n1,n2都分别指向第一个元素(注意n2的初始值必须指向首元素)

2:当 nums[n2] == val 向后移动n2一步

3:nums[n2] != val   则执行 nums[n1++] = nums[n2++] 也就是 n2对应指向的元素赋值给 n1

草图见下:

OJ代码实现
int removeElement(int* nums, int numsSize, int val){//  int fast = 1,slow = 0; 注意这里fast必须初始值是0(可能存在第一个元素就为val)int n1 = 0,n2 = 0;while(fast<numsSize){if(nums[n2] == val){n2++;}else{nums[n1++] = nums[n2++];}}
return n1;}

二:删除排序数组重复项

题目:

思路讲解:

这里我们一人是双指针的玩法:

1:定义2个指针n1 = 0,n2 = 1  注意n1,n2只表示下标的含义

2:nums[n1] == nums[n2] ,此时n2++

直到 nums[n1] != nums[n2] 执行 nums[++n1] = nums[n2++]注意到底是先加加还是先用数值

草图见下:

 

OJ代码实现
int removeDuplicates(int* nums, int numsSize){int n1 = 0,n2 = 1;while(n2 < numsSize){if( nums[n1] == nums[n2]){n2++;}else{nums[++n1] = nums[n2++];}}return n1+1;
}

三: 合并2个有序数组

题目:
思路讲解:

这里我们用三指针的玩法是最优解

1:定义三个变量 l:返回新数组的大小;l1:数组1的大小;l2:数组2的大小

2:借助尾插的思想,比较2个数组元素谁大,取大的进行尾插到数组1的末尾,依次循环

3:注意第一个循环判断条件必须是 逻辑且(不能是逻辑或):因为当有一个数组已经走完的时候剩下 的那个未走完的数组直接进行赋值拷贝即可

4:若是第2个数组先走完的,那么此时已经完成了数组的合并

5:若是第1个数组先走完的下面还需要对数组2 余下的内容进行赋值拷贝

草图见下:

 

OJ代码实现
void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n){/*借助尾插思想:从目标数组的最后一个位置开始进行:取2个数组中较大的元素尾插*/int l= m+n-1,l1 = m-1,l2 = n-1;while(l1 >= 0 && l2 >= 0){if(nums1[l1] >= nums2[l2]){nums1[l--] = nums1[l1--];}else{nums1[l--] = nums2[l2--];}}if(l1 < 0){while(l2>= 0) {nums1[l--] = nums2[l2--];  }}}

结语:

以上就是今日为大家share 的内容。其实仔细看一下,发现这些题目还是有相似之处的。但是但是:做题的思路又有些出入,这时我们不妨静下心来好好复盘一下,看看是否有可以继续深挖的地方。

ok,接下来咱走起来,老铁你懂滴!

http://www.lryc.cn/news/291908.html

相关文章:

  • 数据结构与算法面试系列-02
  • CMake 完整入门教程(五)
  • pgsql中with子句和直接查询差别
  • Day 31 | 贪心算法 理论基础 、455.分发饼干 、 376. 摆动序列 、 53. 最大子序和
  • vue3使用is动态切换组件报错Vue received a Component which was made a reactive object.
  • React16源码: React中LegacyContext的源码实现
  • Gin 框架之jwt 介绍与基本使用
  • 从[redis:LinkedList]中学习链表
  • Prometheus+grafana配置监控系统
  • Linux之安装配置CentOS 7
  • 神经网络与深度学习Pytorch版 Softmax回归 笔记
  • git学习及简单maven打包
  • 如何用MapTalks IDE来发布网站?
  • 我用selenium开发了一个自动创建任务,解放重复性工作
  • 安卓11修改HDMI自适应分辨率
  • Linux实验记录:使用Apache的虚拟主机功能
  • 分布式空间索引了解与扩展
  • Set和Map的应用场景
  • 小白级教程,10秒开服《幻兽帕鲁》
  • IDEA 构建开发环境
  • 归并排序----C语言数据结构
  • 【网站项目】065健康综合咨询问诊平台
  • Adobe Camera Raw forMac/win:掌控原始之美的秘密武器
  • OpenHarmony—开发及引用静态共享包(API 9)
  • 测试面试题常见题
  • 代码随想录算法训练营第六天 - 哈希表part02
  • 【Javaweb程序设计】【C00165】基于SSM的高考志愿辅助填报系统(论文+PPT)
  • 海外云手机为什么吸引用户?
  • 将`List<String>`转换为`List<Long>`
  • 【Unity3D小功能】Unity3D中Text使用超链接并绑定点击事件