面试算法题
文章平均质量分 84
面经中的算法题
快乐小谯
一步一脚印
展开
-
Leetcode反转链表
一、剑指 Offer 24. 反转链表 /leetcode 206题目链接:剑指 Offer 24. 反转链表 - 力扣(LeetCode) (leetcode-cn.com)题目描述:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。方法一:迭代在遍历链表时,将当前节点的next指针改为指向前一个节点。由于节点没有引用其前一个节点,因此必须事先存储其前一个节点。在更改引用之前,还需存储后一个节点。最后返回新的头引用。class Solution{ public Li原创 2021-08-08 19:04:11 · 172 阅读 · 0 评论 -
从上到下打印二叉树
一、剑指 Offer 32 - I. 从上到下打印二叉树 I题目链接:剑指 Offer 32 - I. 从上到下打印二叉树 - 力扣(LeetCode) (leetcode-cn.com)题目要求从上至下打印二叉树,即为二叉树的广度优先搜索BFS。BFS通常借助队列的先入先出特性来实现。算法流程:特例处理:当树的根节点为空,则直接返回空列表 [] ;初始化:打印结果列表 res = [] ,包含根节点的队列 queue = [root] ;BFS循环:当队列queue为空时跳出;出队:队原创 2021-08-08 15:43:52 · 183 阅读 · 0 评论 -
TopK问题的解析及代码
问题描述:从arr[1,n]中,找出最大的K个数方法一:堆排序堆排序参考:思路:只找到topk,不排序topk。先用前k个元素生成一个小顶堆(即父节点比子节点小的完全二叉树),这个小顶堆用于存储当前最大的k个元素。接着,从第k+1个元素开始扫描,和堆顶(堆中最小元素)进行比较,如果被扫描的元素大于堆顶则替换堆顶的元素,并调整堆,以保证堆内的k个元素总是当前最大的k个元素。扫描完所有n-k个元素,最终堆中的k个元素就是topk采用优先队列:下面的代码的目的是利用优先队列得到第k大元素原创 2021-08-06 16:23:26 · 408 阅读 · 0 评论 -
十大排序算法总结 # 待完善
先提前约定交换函数:protected void swap(int[] nums, int i, int j){ int temp = nums[i]; nums[i] = nums[j]; nums[j] = temp;}一、选择排序思路:从数组中选择最小元素,将它与数组的第一个元素交换位置。再从数组剩下的元素中选择出最小的元素,将它与数组的第二个元素交换位置。不断进行这样的操作,直到将整个数组排序。复杂度:n个元素,第一次排序需要比较n-1次,第二次排序需要比原创 2021-08-06 11:09:08 · 262 阅读 · 1 评论