算法
文章平均质量分 65
算法解法思维和总结,附加代码说明
buchifanqie
这个作者很懒,什么都没留下…
展开
-
【算法】树状数组原理和实现(纪录片)
树状数组原理和实现树状数组是一种维护数组前缀和、区间和的数据结构,思想和跳跃表有点类似。那么衍生出一个问题,为什么不直接建树?答案是没必要,因为树状数组能处理的问题就没必要建树。和Trie树的构造方式有类似之处。建立索引树状数组的一个节点索引的原始数据数量,与该节点编号在二进制下最低为的1有关1,3,5,7… 二进制下以1结尾,仅索引1个数据(自身)2,6,10,14…二进制下以10结尾,索引2个数据(自身,它前面的那个数)4,12… 二进制下以100结尾,索引4个数据(自身,前面3个数).原创 2021-09-14 18:58:48 · 213 阅读 · 0 评论 -
【算法】字符串算法题——回文(学习篇)
验证回文串给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true解释:"amanaplanacanalpanama" 是回文串示例 2:输入: "race a car"输出: false解释:"raceacar" 不是回文串class Solution { public boolean isPali..原创 2021-08-17 19:55:46 · 339 阅读 · 0 评论 -
【算法】排序和二分以及相关刷题(学习篇)
排序1. 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。2. 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。1. 选择排序(Selection Sort)选择排序(Selection-sort)是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素.原创 2021-07-28 19:04:36 · 120 阅读 · 0 评论 -
【算法】二分的细节你真的懂了吗(模板方法)
寻找第一个>= target的数需要注意的地方left和right的初始值,为何right=nums.length目标是为了取第一个大于等于target的数,那么这个数可能不存在;假如target不存在,那么right的值为nums.length - 1,返回的left下标就是最后一个元素 ;如果right = right + 1,那么最后返回的是nums.length。(更详细的解释判断是否存在要求的值就是nums[left] == target和left == nums.lengt.原创 2021-07-19 12:12:24 · 140 阅读 · 0 评论 -
【算法】 有序无重复/重复数组的二分查找 (纪录篇)
题目给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例 1:输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4示例 2:输入: nums = [-1,0,3,5,9,12], target = 2输出: -1解释: 2 不存在 nums 中因此返回 -1提示:你可以假设 nums.原创 2021-05-31 17:00:40 · 1008 阅读 · 0 评论 -
【算法】 判断字符的子序列(纪录篇)
给定字符串 s 和 t ,判断 s 是否为 t 的子序列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。进阶:如果有大量输入的 S,称作 S1, S2, … , Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。在这种情况下,你会怎样改变代码?示例 1:输入:s = "abc", t = "ahbgdc"输出:true示例 2:输入:s = ".原创 2021-05-26 18:55:05 · 364 阅读 · 0 评论 -
【算法】 链表反转以及升级难度-递归和迭代解法(纪录篇)
链表反转-问题描述现存一个单项链表,next指向下一个节点(如图),node1->node2->node3->node4->node5问:如何实现把链表反转成:node5->node4->3->node2->node1初步思想我的第一思想是:我遍历到最后然后再来倒序的进行链表反转;感觉对于反转的话,第一时间我肯定需要找到最后一个节点,然后把他变为头节点,然后再找到次级节点然后再反转指针,不过这个怎么实现呢,一头晕。bigo,突然想了一下,我递.原创 2021-05-21 14:53:41 · 189 阅读 · 0 评论 -
【算法】简述统计一个圆中点的数目(纪录篇)
首先还是老规矩先亮剑,展现出这次的题目给你一个数组 points ,其中 points[i] = [xi, yi] ,表示第 i 个点在二维平面上的坐标。多个点可能会有 相同 的坐标。同时给你一个数组 queries ,其中 queries[j] = [xj, yj, rj] ,表示一个圆心在 (xj, yj) 且半径为 rj 的圆。对于每一个查询 queries[j] ,计算在第 j 个圆 内 点的数目。如果一个点在圆的 边界上 ,我们同样认为它在圆 内 。请你返回一个数组 answer ,其中.原创 2021-04-25 15:54:27 · 992 阅读 · 0 评论 -
【算法】数字三角形打印路径数字动态规划(纪录篇)
给定一个由n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大和路径。输入数组:73 88 1 02 7 4 44 5 2 6 5输出:最大:30路径:7 3 8 7 5普通思维从上到下,一个一个的遍历然后相加对比。那就是把所有的可能都要走一遍,然后比对最大的一个数出来,然后打印路径。那么这个所有的路径就非常多了,而且会跟着层数的增加成几何倍数的增加,所以这种比对方式肯定是不对的。.原创 2021-04-22 15:35:47 · 651 阅读 · 0 评论 -
【算法】中序遍历二叉树-层级遍历(记录篇)
算法题目:给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层序遍历结果:[ [3], [9,20], [15,7]]通过次数294,770提交次数459,173解题思路第一感思维:遍历整棵树,那么我不知道哪个节点是哪一层的,我只能从左边遍历到底,然后在遍历右边(前序遍历)。那么怎么才原创 2021-04-21 19:49:51 · 363 阅读 · 0 评论
分享