数据结构与算法
文章平均质量分 70
又是好风景
这个作者很懒,什么都没留下…
展开
-
乘积为正数的最长子数组长度
1567 乘积为正数的最长子数组长度给你一个整数数组 nums ,请你求出乘积为正数的最长子数组的长度。一个数组的子数组是由原数组中零个或者更多个连续数字组成的数组。请你返回乘积为正数的最长子数组长度。示例 1:输入:nums = [1,-2,-3,4]输出:4解释:数组本身乘积就是正数,值为 24 。示例 2:输入:nums = [0,1,-2,-3,-4]输出:3解释:最长乘积为正数的子数组为 [1,-2,-3] ,乘积为 6 。注意,我们不能把 0 也包括到子数组中,因为这.原创 2021-01-25 20:52:09 · 546 阅读 · 1 评论 -
实现Trie树
文章目录应用场景Trie树的结构实现Trie树和哈希表的对比Trie树(发音同“try”),又称为前缀树、字典树,从名字来看,它首先是一种树形的结构,“前缀”、“字典”等字样表明其存储的是数据的前缀,像字典一样,可以实现快速的查找。实际上,Trie树是一种专门处理字符串匹配的数据结构,用来在一批字符串中,快速查找某个指定的字符串或字符串前缀。应用场景搜索建议IP路由,最长前缀匹配输入法-预测Trie树的结构先来看一个例子,比如说我们有一组字符串,分别是 ha、head、h原创 2021-01-16 14:29:17 · 295 阅读 · 0 评论 -
链表反转全家桶(二):动画详解两两交换链表中的节点
上回说到面试中的一个高频题目:单链表反转,提到它的“难兄难弟”不是那么简单。今天就来分析一下它的二哥:“两两交换链表中的节点”。题目描述如下。给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.方法一:三指针迭代有了上回单链表反转的双指针迭代法的基础,再来解决它二哥,就相对容易很多了。“巧妇难为无米之炊”。题目中说的原创 2020-10-01 10:40:37 · 468 阅读 · 0 评论 -
链表反转全家桶(一):动画详解单链表反转
单链表的翻转是一个easy级别的题目,这个题目在力扣上的提交次数达到47万次,而且在面试中也频频出现,可谓是大受欢迎,它的兄弟们也跟着风光了。这道题本身是比较简单的,而它的“难兄难弟”就不是那么简单了。递归是个神奇的...原创 2020-09-26 22:23:06 · 815 阅读 · 0 评论 -
周赛这道题没做出来,但也很开心
昨天第35周双周赛赛有一道题目,没做出来,事后,通过这个题目在力扣上挖出来另外两道题目,而另外两道题目用到的知识点,综合起来,来解决周赛的题目,就能迎刃而解了,所以,虽然周赛的题目没做出来,但学到两个知识点,同样很开心。周赛题目是这样的。使数组和能被 P 整除给你一个正整数数组 nums,请你移除 最短 子数组(可以为 空),使得剩余元素的 和 能被 p 整除。 不允许 将整个数组都移除。请你返回你需要移除的最短子数组的长度,如果无法满足题目要求,返回 -1 。子数组 定义为原数组中连续的一原创 2020-09-22 07:47:06 · 180 阅读 · 0 评论 -
快排算法及其迁移应用
文章目录快排的实现快排的迁移应用上回讲到二分查找算法和它的迁移应用,和查找算法一样,排序算法也是基本且超级常用的算法。而排序算法的思想又能拿来解决很多其他问题,比如归并排序、堆排序和快速排序。话休絮烦,今天主要来说说快速排序的思路怎么应用。“快排,快排”,念起来好似布谷鸟的叫声,“谷谷,谷谷”,声声的叫着夏天。可快排算法一点也不干脆利落,不似降龙十八掌般的摧古拉朽,倒像乾坤大挪移的移形换位,转来转去。快排算法是Tony Hoare大佬在1959年提出的,目前仍然广泛应用,快速排序有时候也叫分割-交换(原创 2020-09-12 23:52:38 · 305 阅读 · 0 评论 -
二分查找思想的迁移应用
这里写自定义目录标题求根号x二叉搜索树中第K小的元素二分查找算法可以说是很基本的一个算法思想,如果写成题目一般是这样的形式:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。力扣704别看这样一道小题,我在面试的那么多次中还碰到过三次,这样的题目当然是信手拈来,直接默写下来的,最多两分钟搞定。还记得高三物理老师给我说过的一句话:“自信过头了,就会阴沟里翻船。”那时候我对物理的原创 2020-08-30 09:00:03 · 899 阅读 · 0 评论 -
算法OA 9题
626. Rectangle Overlap给定两个矩形,判断这两个矩形是否有重叠。Example样例 1:输入 : l1 = [0, 8], r1 = [8, 0], l2 = [6, 6], r2 = [10, 0]输出 : true样例 2:输入 : [0, 8], r1 = [8, 0], l2 = [9, 6], r2 = [10, 0]输出 : falseNotice...原创 2019-04-03 23:02:22 · 480 阅读 · 0 评论 -
strcat,strcpy,strcmp,strstr,memset,memcpy,strsep在内核中的实现
以下代码来自linux-2.6.381、strcat在lib/string.c中实现。 1 /** 2 * strcat - Append one %NUL-terminated string to another 3 * @dest: The string to be appended to 4 * @src: The string to appen原创 2013-12-23 09:42:23 · 2662 阅读 · 0 评论