2020年面试算法题合集(北京中小公司版)持续更新

数组

链表

1. 剑指offer24:反转链表 (leetcode206. Reverse Linked List)

方法1: iterative

记忆点: 采用pre,cur,next3个指针进行迭代

关键点:

  1. 分析出有3个指针: pre,cur,next。
  2. for的终止条件cur != nil表示每个链表节点都需要翻转一次. 以链表[1,2,3]为例,cur != nil可以使得1,2,3都分别作为cur执行一次循环。
  3. 返回的指针是pre。因为退出循环的条件是cur==nil,退出循环后的指针的值为pre=xxx,cur=nil,next=nil,很明显需要返回pre。
//      1->2->3->null
//null<-1<-2<-3
// cur:当前处理的节点,cur.Next需要指向其前一个元素
// next:保存子链
// pre:保存前一个元素
// Test Cases: 1. NULL 2.One Node 3. Two Nodes
func reverseList(head *ListNode) *ListNode {
    var pre *ListNode
    cur := head
    for cur != nil{
        next := cur.Next // save next
        cur.Next = pre // recerse cur
        // update pointers
        pre = cur
        cur = next
    }
    return pre
}

方法2: recursive

如何递归反转链表
How To Reverse A Singly Linked List | The Ultimate Explanation (Iteratively & Recursively)

递归

原文地址:https://www.cnblogs.com/yudidi/p/12180596.html

时间: 2024-08-28 05:28:00

2020年面试算法题合集(北京中小公司版)持续更新的相关文章

Visual C++ 运行库合集包轻量版 v20200317

Microsoft Visual C++ Redistributable(俗称系统运行库,简称MSVC,VB/VC)是Windows操作系统应用程序的基础类型库组件.Visual C++运行库合集包轻量版,是由国外My Digital Life论坛@abbodi1406成员改装制作,合集包整合了所有版本的Visual C ++组件,自动安装所有库文件,体积小巧装机必备. 新版变化 2020/03/17 v28.0New: Visual C++ 2019 Redistributable – 14.

一道看似非常难的面试算法题

这是昨天面试百度时碰到的一道算法题:任意数分三组,使得每组的和尽量相等.由于时间仓促,加之面试时头昏脑涨,这道题没做出来甚至没有给出思路,这让我多少有些遗憾和不甘.因为最近接触算法的东西较多而且本身对算法感兴趣,所以回家之后绞尽脑汁想把这题做出来.其实刚看到这题时感觉不难,但是因为数字个数及数值的不确定,我感觉这题越想越难.昨天一晚上没有睡好,甚至做梦都在想这题! 今天上午在多个群里问了这题,都没有给出思路,真是绝望至极.很多人都说 n/3 的思路,其实这种思路一开始就是死胡同.本人属于那种不会

常见算法题合辑(一)

这一章的内容,有些之前已经在微信公众号中将详细的思路及步骤汇总过,有些之后可能会再找时间对其进行分析,这里只将最终实现罗列出来,难易程度不分先后,算法复杂度不保证是最优,留给大家空间自行思考,当然,本章用的是C#语言进行编码,大家可以使用自己熟悉的语言将这些算法实现一遍哦~ 如果你有什么有趣的算法题或者没能解决的算法题,也可以留言给小编,让我们一起玩转算法~ 1. 冒泡排序 这个算是所有算法中最为简单的了,实现方法如下: 2. 插入排序 从排序算法来看,这个算法也是属于比较简单的了,实现方法如下

面试算法题:爬楼梯,N级楼梯有多少种走法?

By Long Luo 个人博客链接 最近去面试时,在一家小公司面试时,公司小BOSS给我出了一道算法题: 一个人爬楼梯,一步可以迈一级,二级,三级台阶,如果楼梯有N级,要求编写程序,求总共有多少种走法. 这个问题应该是一个很老的题目了,用中学数学来说,就是一个排列组合问题.当时拿到这个题目之后,首先想到使用递归的思想去解决这个问题: N级楼梯问题可以划分为:N-1级楼梯,N-2级楼梯,N-3级楼梯的走法之和. 先计算下0,1,2,3及楼梯有多少种走法: 1 --> 1 2 --> 11 2

常考面试算法题之暴力枚举

结合2017春招和秋招真题,以下几类算法题最常考,汇总了一下: 好多鱼! 牛牛有一个鱼缸.鱼缸里面已经有n条鱼,每条鱼的大小为fishSize[i] (1 ≤ i ≤ n,均为正整数),牛牛现在想把新捕捉的鱼放入鱼缸.鱼缸内存在着大鱼吃小鱼的定律.经过观察,牛牛发现一条鱼A的大小为另外一条鱼B大小的2倍到10倍(包括2倍大小和10倍大小),鱼A会吃掉鱼B.考虑到这个,牛牛要放入的鱼就需要保证: 1.放进去的鱼是安全的,不会被其他鱼吃掉 2.这条鱼放进去也不能吃掉其他鱼 鱼缸里面已经存在的鱼已经相

前端面试题总结(js、html、小程序、React、ES6、Vue、算法、全栈热门视频资源)持续更新 &#362414;

原文: http://blog.gqylpy.com/gqy/438 置顶:来自一名75后老程序员的武林秘籍--必读(博主推荐) 来,先呈上武林秘籍链接:http://blog.gqylpy.com/gqy/401/ 你好,我是一名极客!一个 75 后的老工程师! 我将花两分钟,表述清楚我让你读这段文字的目的! 如果你看过武侠小说,你可以把这个经历理解为,你失足落入一个山洞遇到了一位垂暮的老者!而这位老者打算传你一套武功秘籍! 没错,我就是这个老者! 干研发 20 多年了!我也年轻过,奋斗过!我

2019年大厂Java面试真题合辑放送

java 后端面试题1.List 和 Set 的区别 2.HashSet 是如何保证不重复的 3.HashMap 是线程安全的吗,为什么不是线程安全的(最好画图说明多线程环境下不安全)? 4.HashMap 的扩容过程 5.HashMap 1.7 与 1.8 的 区别,说明 1.8 做了哪些优化,如何优化的? 6.对象的四种引用 7.Java获取反射的三种方法 8.Java反射机制 9.Arrays.sort 和 Collections.sort 实现原理 和区别 10.LinkedHashMa

远景面试算法题——FolderSize

描述 文件被存储在磁盘上的时候,通常为cluster方式.每个cluster具有固定的大小,一个文件所消耗的空间量始终是cluster大小的整数倍.因此,如果cluster的大小为100字节,165字节的文件将会使用实际使用200字节的存储空间,造成35个空间的浪费. 一个folder会有多个file,每个file单独计算浪费空间:如果某个folder没有出现,浪费空间为0 定义 Method signature: int[] calculateWaste(String[] files, int

软考错题合集之13-05-AM

1.常用的虚拟存储器由主存和辅存两级存储器组成. 虚拟存储器是为了给用户提供更大的随机存取空间而采用的一种存储技术.它将内存与外存结合使用,好像有一个容量极大的内存储器,工作速度接近于主存,每位成本又与辅存接近,在整机形成多层次存储系统.所以虚拟存储器有主存和辅存两级存储器组成. 2.DMA工作方式下,在主存与外设之间建立了直接的数据通路. 在DMA(Directional Movement Index,直接存储器访问)模式下,CPU只须向DMA控制器下达指令,让DMA控制器来处理数的传送,数据