algorithm
文章平均质量分 74
酒馆店小二
给岁月以文明,给时光以生命
展开
-
C++链表03:设计链表
1.背景大家好,我是酒馆店小二。力扣707.设计链表在链表类中实现这些功能:get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。addAtHead(val):在链表的第一个元素之前添加一个值为 val 的节点。插入后,新节点将成为链表的第一个节点。addAtTail(val):将值为 val 的节点追加到链表的最后一个元素。addAtIndex(index,val):在链表中的第 index 个节点之前添加值为 val 的节点。如果 index 等于链表的长原创 2022-03-24 16:52:58 · 262 阅读 · 0 评论 -
C++链表02:反转链表
1.背景大家好,我是酒馆店小二。力扣206.翻转链表。题意:反转一个单链表。示例:输入: 2->3->4->5->NULL输出: 5->4->3->2->NULL2.迭代如图,定义pre指针,初始化为 nullptr;定义cur指针,指向头结点;定义temp指针,指向cur->next节点,为什么要指向这个节点?因为接下来要改变cur->next的指向,将cur->next指向pre;重复执行上述操作,不断后移p原创 2022-03-23 17:06:16 · 4667 阅读 · 0 评论 -
计算二进制中1的个数
1.背景大家好,我是酒馆店小二。笔者想到在学校里专业课老师问的一个问题:如何高效求一个二进制数 num (非负整数)中 1 的个数?这是什么意思:程序员的世界少不了二进制,一个非负整数用二进制表示出来是什么样的比如:19 对应的二进制形式为:10011,这其中有3个1,这就是我们要求的。题目理解明白就可以解决。2.移位可以把逐个遍历二进制的每一位,将其与 1 做与运算即可。#include <iostream>#include <vector>#include &原创 2022-03-08 17:56:02 · 491 阅读 · 0 评论 -
LeetCode459:重复的子字符串
kmp算法应用原创 2022-02-21 10:36:42 · 550 阅读 · 0 评论 -
LeetCode28:实现strStr()
力扣28:实现strStr()[描述]:在模式串 pattern 中查找是否含有子串 substr,若有,返回子串第一次出现的位置,反之,返回 -1。思考问题:若是 substr 为空时应该返回什么呢?显然,这是一道KMP算法应用的题目。kmp算法介绍第一种解法:暴力解法我们可以让字符串 pattern与字符串 substr 的所有长度为 m 的子串均匹配一次。为了减少不必要的匹配,我们每次匹配失败即立刻停止当前子串的匹配,对下一个子串继续匹配。如果当前子串匹配成功,我们返回当前子串的开原创 2022-02-19 14:46:48 · 456 阅读 · 0 评论 -
图解KMP算法(C++实现)
需求提出给定一个模式串 pattern = “ddywabcdababcdabd” 和一个子串 substr = “abcdabd”,需判断 pattern 中是否包含 substr,如果包含,返回 substr 第一次在 pattern 中出现的位置;如果不包含,返回 -1(常用手段)赶时间的小伙伴可以拿去应急了。原创 2022-02-17 23:13:53 · 619 阅读 · 0 评论