首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏labuladong的算法专栏

    前缀树算法模板秒杀 5算法

    3、实践环节,直接套代码模板秒杀 5算法。本来可以秒杀七八道,篇幅考虑,剩下的我集成到 刷插件 中。 关于回溯算法框架和标准多叉树框架的区别我在 图论算法基础 中探讨过,关键在于遍历「节点」和遍历「树枝」的区别。 不过本文只考虑模板的通用性,重在思路,所以就直接套用上文给出的算法模板解题,具体实现上的细节优化我集成在 刷插件 的「思路」按钮中。 先看力扣第 1804 「实现前缀树 II」: 这就可以用到TrieMap,每个插入的word就是键,插入的次数就是对应的值,然后复用TrieMap的 API 就能实现题目要求的这些函数: class 可以看到,我最近写的图论算法以及本文讲的 Trie 树算法,都和「树」这种基本数据结构相关,所以我才会在刷插件中集成 手把手刷 100 道二叉树题目 的功能。

    2.7K10编辑于 2022-01-24
  • 来自专栏C/C++学习

    【优选算法练习】day5

    ret.push_back(left); } } } return ret; } }; 4.运行结果 总结 今天是算法练习的第 5天。

    37820编辑于 2023-10-15
  • 来自专栏程序员阿杰

    算法5.最长回文串

    算法leetcode 给你一个字符串 s,找到 s 中最长的回文子串。 示例 1: 输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。

    33830编辑于 2022-01-10
  • 来自专栏技术分享交流

    JavaScript专项算法5):面向对象

    (thai.name); // -> Logs 'Thai' thai.introduce(); //-> Logs 'Hello World, my name is Thai' 拓展:子类 挑战1/5 function adminFactory(name, score) { const admin = new userFactory(name, score); return admin; } 挑战3/5 name, score) { const admin = new userFactory(name, score); admin.type = 'Admin'; return admin; } 挑战4/5 name: { value: name, }, score: { value: score, }, }); admin.type = "Admin"; return admin; } 挑战5/ 5 SHAREPUBLICMESSAGE 问题: 创建一个打印“Welcome users!”

    50430编辑于 2023-02-14
  • 来自专栏心源易码

    TypeScript算法实战——剑指 Offer篇(5

    在本文中,我们将使用TypeScript来解决剑指offer的算法。这些问题涵盖了各种各样的主题,包括数组、字符串、链表、树、排序和搜索等。 我们将使用TypeScript的强类型和面向对象的特性来解决这些问题,并通过实际的代码示例来演示如何使用TypeScript来解决算法问题。 示例 1:输入:nums = [3,4,3,3]输出:4示例 2:输入:nums = [9,1,7,9,7,9,7]输出:13.2、题解哈希表方法同样能解,上一的哈希方法直接拿过来套用。 输入: [1,2,3,4,5]输出: True输入: [0,0,1,2,5]输出: True10.2、题解这要注意的是A为1,故10 J Q K A不能算顺子,而0是大小王,且可以五张都是。 要打出顺子,有两个特点:除了0可以重复,其他数不能重复(不然顺子里面会出现对,如3,4,4,5,6、0,3,4,5,5不符合要求)最大值减去最小值应该小于5,比如2,3,4,5,6、2,0,0,4,5数字最大为

    32100编辑于 2024-09-20
  • 来自专栏全栈程序员必看

    C++代码算法:(5).最长回文子串

    s.size()) return str_2; 接下来继续进行循环 end++ 最后: 当满足begin>s.size()-1时退出程序,执行 return str_2 反思所得: 在这道的解题过程中 ,我开始的时候是不明白回文的定义是什么的,但是经过代码的不断上传和查看他人的讲解,我明白了回文的定义(类似于“上海自来水来自海上”),了解了回文的定义我就重新修改了思路,为了简便算法,我开始考虑将程序分条件编程

    59010编辑于 2022-06-29
  • 来自专栏编码如写诗

    算法

    我扫了一眼代码,心想这挺经典的,来,我给你捋一捋。 ##算法:Word Break 题目理解 题目说给你一个字符串 s 和一个单词列表 wordDict。 这的关键点在于理解动态规划的状态转移。dp[i] 表示前 i 个字符能否拆分,如果某个位置 j 之前能拆分,而且 s[j:i] 是字典里的词,那 dp[i] 就能拆分。

    17210编辑于 2026-03-02
  • 来自专栏编码如写诗

    算法

    我扫了一眼代码,心想这挺经典的,来,我给你捋一捋。 ##算法:House Robber 题目理解 题目说你是专业小偷,计划偷窃沿街的房屋。 偷第1、3、5家,2+9+1=12 说白了就是:选一些数,这些数不能相邻,要让它们的和最大。 思路分析 暴力解法:枚举所有可能的偷窃方案,选金额最大的。每家可以选择偷或不偷,2^n种方案。 比如偷1、3、5家,或者2、4、6家。这就是为什么状态转移要考虑i-2而不是i-1。 Go函数名:函数名叫rob,不是robHouse,面试时要注意函数名的规范。 这的关键点在于理解动态规划的状态转移。每家有两种选择:偷或不偷。如果偷这一家,上一家就不能偷,所以是dp[i-2]+nums[i]。如果不偷这一家,就是dp[i-1]。取两者最大值就是最优解。

    20510编辑于 2026-03-02
  • 来自专栏编码如写诗

    算法

    我扫了一眼代码,心想这挺经典的,来,我给你捋一捋。 ##算法:Best Time to Buy and Sell Stock 题目理解 题目说给你一个数组 prices,prices[i] 是第 i 天的股票价格。 设计算法计算你能获取的最大利润。 注意不能在买入前卖出,也就是买入日期必须在卖出日期之前。 举例说明: 输入 [7,1,5,3,6,4],输出 5。 第2天买入(价格1),第5天卖出(价格6),利润5 输入 [7,6,4,3,1],输出 0。价格一直在跌,不买最合适 说白了就是:找一个最低的买入价和一个最高的卖出价,让它们的差最大。 这的关键点在于理解一次遍历的思路。我们要找最低的买入价和最高的卖出价,但不能简单找最小值和最大值,因为买入必须在卖出之前。所以要用一次遍历,维护历史最低价,同时计算每次卖出的利润。

    13610编辑于 2026-03-02
  • 来自专栏猫头虎博客专区

    LeetCode 1-5 详解 Java版 (三万字 图文详解 LeetCode 算法1-5 =====>>> <建议收藏>)

    第一:TWO SUM 1. 题目描述 (简单难度) 给定一个数组和一个目标和,从数组中找两个数字相加等于目标和,输出这两个数字的下标。 2. 5. 可以看到 P[ 6 ] 等于 5,所以它是从左边扩展 5 个字符,相应的右边也是扩展 5 个字符,也就是 “#c#b#c#b#c#”。 所以我们只需要返回原字符串的第 0 到 第 (5 - 1)位就可以了。 8. 求每个 P [ i ] 接下来是算法的关键了,它充分利用了回文串的对称性。 而 Manacher 算法对回文串对称性的充分利用,不得不让人叹服,自己加油啦! 今天我们一起学习了LeetCode 1-5算法分析,感谢大家阅读,觉得不错记得收藏哦! 喜欢 请点个 + 关注

    62710编辑于 2024-04-07
  • 来自专栏算法channel

    5算法 都可以套用这个模板

    3 代码 1public class Solution 2 3 { 4 public IList<IList<int>> GetPermutation(int n) 5 } 36 } 37 } 4 套用模板可求解的题目 1) 集合内元素都不相同,求子集 1nums = [1,2,3], 子集为: 2[ 3 4 [3], 5 14 [2,3], 15 16 [1,2], 17 18 [] 19 20] 2) 集合内元素可能相同,求子集 1nums = [1,2,2], 子集为: 2 3[ 4 [2], 5 [1], 6 [1,2,2], 7 [2,2], 8 [1,2], 9 [] 10] 3) 求集合的不同组合序列 1[1,1,2] 的不同组合序列: 2 3[ 4 [1,1,2], 5

    69100发布于 2018-07-31
  • 来自专栏C 与 Java 数据结构研习志

    算法分享】小白必备的算法基础

    引言:当你作为一个初学Java算法的小白,可以点进来看看我这些算法基础,能够很好的帮助你打好算法基本功。打好基础,才能更上一层楼。速速开始学起这些算法吧! 1:输入宽度 代码详解: package demo5_2; import java.util.Scanner; /** * Created with IntelliJ IDEA. 详解代码 package demo5_2; import java.util.Scanner; /** * Created with IntelliJ IDEA. 代码详解: package demo5_2; import java.util.Scanner; /** * Created with IntelliJ IDEA. 代码详解: package demo5_2; /** * Created with IntelliJ IDEA.

    47110编辑于 2025-05-28
  • 来自专栏MapleYe

    算法】打印算法总结

    前言 本文记录了我对打印算法的总结。先说说什么事打印算法,就是按照一定的规则打印二维矩阵。 例如:旋转正方形矩阵: 1 2 3 4 13 9 5 1 5 6 7 8 ---> 14 10 6 10 11 12 15 11 7 3 13 14 15 16 16 12 8 4 接下来,将会有几道打印算法 例如: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ========= 13 9 5 1 14 10 6 2 15 11 7 3 16 12 8 4 例如:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 打印结果为:1,2,3,4,8,12,16,15,14,13,9, 5,6,7,11, 10 【要求】 额外空间复杂度为

    90010发布于 2020-03-28
  • 来自专栏五分钟学算法

    经典算法:排序算法

    序列的变化情况采样如下: 20,15,21,25,47,27,68,35,84 15,20,21,25,35,27,47,68,84 15,20,21,25,27,35,47,68,84 请问采用的是以下哪种排序算法

    1.5K10发布于 2019-10-23
  • 来自专栏花落的技术专栏

    常见算法

    为了求出岛屿的数量,我们可以扫描整个二维网格。如果一个位置为 11,则以其为起始节点开始进行深度优先搜索。在深度优先搜索的过程中,每个搜索到的 11

    1K00编辑于 2021-12-05
  • 来自专栏我在本科期间写的文章

    算法设计】编写算法,统计带头节点的单链表L的实际元素个数,第5(CC++)

    5 统计带头节点的单链表L的实际元素个数 编写算法,统计带头节点的单链表L的实际元素个数。 5、计数器累加: count++; 每遍历一个节点(除了头节点外),计数器 count 加1。 6、指针后移: p = p->next; 临时指针 p 后移,指向下一个节点。

    27910编辑于 2024-08-09
  • 来自专栏玩转大前端

    js算法

    面试发现自己的算法知识有不足,因此参考了多篇文章学习总结。 冒泡排序 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较 冒泡排序最好的时间复杂度为O(n),是一种稳定排序算法。 快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动。 找出整型数组中乘积最大的三个数 let unsortedArray = [-10, 7, 29, 30, 5, -10, -70]; // 乘积最大的只有可能是两种情况: // 1. result1 : result2; } multiply(unsortedArray); 5.

    1.7K51编辑于 2022-08-15
  • 来自专栏花落的技术专栏

    常见算法

    为了求出岛屿的数量,我们可以扫描整个二维网格。如果一个位置为 11,则以其为起始节点开始进行深度优先搜索。在深度优先搜索的过程中,每个搜索到的 11

    64930发布于 2021-11-25
  • 来自专栏chenchenchen

    OJ算法

    #include <stdio.h> #include <string.h> #define MAX 1000 struct Node{     int v,net; }; struct Node node[MAX]; int main(){     int n,e,t,i,x,y,z,head[MAX],que[MAX],map[MAX/2][MAX/2],qh,qt;     while(scanf("%d %d",&n,&e)!=EOF){         memset(head,-1,sizeof(head));         for(i = 0;i < e;i++){             scanf("%d %d",&x,&y);             node[i].v = y;             node[i].net = head[x];             head[x] = i;         }         scanf("%d",&t);         while(t--){             z = 0;             memset(map,0,sizeof(map));             qh = qt = 1;             scanf("%d %d",&x,&y);             if(x == y){                 printf("yes\n");                 continue;             }             que[qt++] = x;             while(qh < qt){                 for(i = head[que[qh]];i != -1;i = node[i].net){                     if(map[que[qh]][node[i].v] == 0){                         map[que[qh]][node[i].v] = 1;                         que[qt++] = node[i].v;                     }                     if(node[i].v == y){                         z = 1;                         break;                     }                 }                 if(z == 1) break;                 qh++;             }             if(z == 1) printf("yes\n");             else printf("no\n");         }         printf("\n");     }     return 0; }

    63530编辑于 2023-01-30
  • 来自专栏酒楼

    算法1

    sc.nextLine(); System.out.println(Integer.parseInt(s.substring(2,s.length()),16)); } } 5. 质数因子(没啥好办法,遍历除(1,Math.sqrt(n)) 描述 功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 ) 数据范围: 1 输入:180 输出:2 2 3 3 5 6.取近似值(n = (int)(number+0.5)) 描述 写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。

    49310编辑于 2023-12-09
领券