目录1.面试题17.14. 最小K个数解题思路2.前K个高频元素解题思路3.前K个高频单词解题思路TOP-K问题:即求数据集合中前K个最大的元素或者最小的元素,一般情况下数据量都比较大。比比如:专业前10名、世界500强、富豪榜、游戏中前100的活跃玩家等。对于Top-K问题,能想到的最简单直接的方式就是排序,但是:如果数据量非常大,排序就不太可取了(可能数据都不能一下子全部加载到内存中)。最佳的方式就是用堆来解决,基本思路如下:1.用数据集合中前K个元素来建堆 前k个最大的元素,则建小堆前k个最小的元素,则建大堆2.用剩余的N-K个元素依次与堆顶元素来比较,不满足则替换堆顶元素将剩余N-K个
文章目录前言一、移除链表元素1.题目介绍2.思路3.代码二、反转链表1.题目介绍2.思路3.代码三、链表的中间结点1.题目介绍2.思路3.代码四、链表的倒数第k个节点1.题目介绍2.思路3.代码前言以下是链表经常考的面试题,我在这里进行归纳和讲解,采取的是循序渐进的方式y一一讲解当然,需要有链表基础,没有的话先看我前面的链表讲解一、移除链表元素1.题目介绍题目在力扣得的203.移除链表元素2.思路本题有两种思路1.使用带有哨兵位的头结点2.将头结点为空时和头删时两种情况分开写3.代码1.带哨兵位的头节点/***Definitionforsingly-linkedlist.*structList
文章目录前言一、移除链表元素1.题目介绍2.思路3.代码二、反转链表1.题目介绍2.思路3.代码三、链表的中间结点1.题目介绍2.思路3.代码四、链表的倒数第k个节点1.题目介绍2.思路3.代码前言以下是链表经常考的面试题,我在这里进行归纳和讲解,采取的是循序渐进的方式y一一讲解当然,需要有链表基础,没有的话先看我前面的链表讲解一、移除链表元素1.题目介绍题目在力扣得的203.移除链表元素2.思路本题有两种思路1.使用带有哨兵位的头结点2.将头结点为空时和头删时两种情况分开写3.代码1.带哨兵位的头节点/***Definitionforsingly-linkedlist.*structList
C/C++常用函数find、count、find_if、any_of查找元素for_each()修改区间内元素reverse逆序(反转)函数max_element()、max({a,b,c})找最大值copy(begin,end,container)复制函数abs()绝对值函数取整函数ceil、floor和roundadvance(it,n)迭代器进退n位prev(it,n)迭代器向左移动n位distance(first,last)计算元素个数INT_MAX/MIN最大最小整型next_permutation()数组全排列shuffle()打乱顺序accumulate()累加函数iota()区
C/C++常用函数find、count、find_if、any_of查找元素for_each()修改区间内元素reverse逆序(反转)函数max_element()、max({a,b,c})找最大值copy(begin,end,container)复制函数abs()绝对值函数取整函数ceil、floor和roundadvance(it,n)迭代器进退n位prev(it,n)迭代器向左移动n位distance(first,last)计算元素个数INT_MAX/MIN最大最小整型next_permutation()数组全排列shuffle()打乱顺序accumulate()累加函数iota()区
LeetcodeLeetcode-面试题17.04.消失的数字Leetcode-189.轮转数组Leetcode-面试题17.04.消失的数字异或法时间复杂度为O(N)我们的思路是将所有的数异或在一起,然后再将结果异或0-N,得到的最后结果就是消失的数字;原理:a^a=0;0^a=a. intmissingNumber(int*nums,intnumsSize) { intret=0,i=0; //先将数组中的数异或在一起 for(i=0;i0-N等差数列求和再减去数组中的值时间复杂度为:O(N)这个思路是,先将0-N个数字的和通过等差数列求和公式相加在一起,再遍历一次数组依次减
LeetcodeLeetcode-面试题17.04.消失的数字Leetcode-189.轮转数组Leetcode-面试题17.04.消失的数字异或法时间复杂度为O(N)我们的思路是将所有的数异或在一起,然后再将结果异或0-N,得到的最后结果就是消失的数字;原理:a^a=0;0^a=a. intmissingNumber(int*nums,intnumsSize) { intret=0,i=0; //先将数组中的数异或在一起 for(i=0;i0-N等差数列求和再减去数组中的值时间复杂度为:O(N)这个思路是,先将0-N个数字的和通过等差数列求和公式相加在一起,再遍历一次数组依次减
本文已收录于专栏🌻《刷题笔记》文章目录前言🎨1、二维数组中的查找题目描述思路🎨2、替换空格题目描述思路🎨3、从尾到头打印链表题目描述思路一(反转函数)思路二(递归)思路二(栈)前言题目来源参考阿秀学长的刷题笔记,小戴只是把C++的题解改成了Java版本,并整理了其他思路,便于自己的学习~如果解题有更好的方法,本文也会及时进行更新~希望对你有帮助~一起加油哇~🎨1、二维数组中的查找牛客网原题链接题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数[[1
本文已收录于专栏🌻《刷题笔记》文章目录前言🎨1、二维数组中的查找题目描述思路🎨2、替换空格题目描述思路🎨3、从尾到头打印链表题目描述思路一(反转函数)思路二(递归)思路二(栈)前言题目来源参考阿秀学长的刷题笔记,小戴只是把C++的题解改成了Java版本,并整理了其他思路,便于自己的学习~如果解题有更好的方法,本文也会及时进行更新~希望对你有帮助~一起加油哇~🎨1、二维数组中的查找牛客网原题链接题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数[[1
题目链接:leetcode1391.题目给你一个字符串s和一个字符串列表wordDict作为字典。请你判断是否可以利用字典中出现的单词拼接出s。注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。2.示例1)示例1:输入:s=“leetcode”,wordDict=[“leet”,“code”]输出:true解释:返回true因为“leetcode”可以由“leet”和“code”拼接成。2)示例2:输入:s=“applepenapple”,wordDict=[“apple”,“pen”]输出:true解释:返回true因为“applepenapple”可以由“apple”“