掘友等级
获得徽章 21
#刷题交流# 通过 快、慢指针找链表中点,然后反转链表,比较两个链表两侧是否相等,来判断是否是回文链表
#刷题交流# 位运算
「算法核心思想」lowbit(n) = n & -nn >> k & 1牢记常用位运算公式
求 n 的二进制第 k 位数字: n >> k & 1
// -n = (~n + 1)返回 n 的最后一位 1:lowbit(n) = n & -n
#刷题交流# 整数二分算法「算法核心思想」在有序情况下 一定要想到二分(一般要求某一段满足某种性质)O(n) 转化为 O(log n)有序 无重复 (两个并非强制要求)
别人琴棋书画样样精通,我就厉害了,我煎炒蒸炸,啥啥都吃
#刷题交流# 回溯的代码模版
voidbacktracking(参数){
if(终止条件){
存放结果;
return;
}
for(选择:本层集合中元素(树中节点孩子的数量就是集合的大小)){
处理节点;
backtracking(路径,选择列表);//递归
回溯,撤销处理结果
}
}
#刷题交流# 双指针的主要用法有以下几种:两个指针在两条链表上行走快慢指针,同时前进前后指针,前指针先走 n 步,之后两个指针同时前进
解决算法题不仅是编写代码的过程,更是一种逻辑思维和问题解决能力的锻炼。 #刷题交流#
前端也就处理了下几万条数据,怎么给我电源主板烧了呢
好消息:公司的电脑还在保修期
坏消息:猫和老鼠在那台电脑,师傅今天还没空修
#刷题交流#
除自身以外数组的乘积
先从左到右遍历数组,计算每个位置左边所有元素的乘积。再从右到左遍历数组,结合左边的乘积计算每个位置的结果。
#刷题交流#
插入、删除和随机访问 O(1)
使用哈希表和数组结合的方式。哈希表存储元素值和其在数组中的索引,数组存储元素。插入操作时,将元素添加到数组末尾,并在哈希表中记录索引。删除操作时,将最后一个元素覆盖要删除的元素,并更新哈希表中的索引,然后删除数组末尾元素。随机访问操作直接通过数组索引访问。
#刷题交流# 贪心算法指在对问题进行求解时,在每一步选择中都采取最好或者最优(即最有利)的选择,从而希望能够导致结果是最好或者最优的算法。注意:贪婪算法所得到的结果不一定是最优的结果(有时候会是最优解),但是都是相对近似(接近)最优解的结果。
#刷题交流#
小F的永久代币卡回本计划
通过 `math.ceil` 函数来实现
这个班上的一边说着不行了
一边还要继续做
这和拍有什么区别
#刷题交流# 超市里的货物架调整
算法步骤
1. 统计商品频率:遍历货架上的商品,统计每个商品的出现次数。
2. 统计顾客需求:遍历顾客想要的商品种类,统计每个商品的需求次数。
3. 优先级排序:根据商品的频率和顾客的需求,确定商品的优先级。优先级高的商品应该放在货架的前面。
4. 计算最大销售量:根据调整后的货架顺序,计算最多可以卖出多少件商品。
关键点
频率统计:确保你正确统计了每个商品的频率和顾客的需求。
优先级排序:根据频率和需求,合理安排商品的顺序。
边界情况:考虑货架上没有顾客想要的商品的情况。
#刷题交流#
摩尔投票算法:
这个算法的核心思想是,如果我们把数组中每个元素看作是“候选人”,并且我们有一个计数器 `count`,那么我们可以通过遍历数组来“投票”。
如果当前元素与候选元素相同,计数器加1;如果不同,计数器减1。
当计数器为0时,我们更换候选人。
最终剩下的候选人就是出现次数超过一半的元素。
下一页