随笔分类 -  算法

摘要:Trie中文名又叫做字典树,前缀树等,因为其结构独有的特点,经常被用来统计,排序,和保存大量的字符串,经常见于搜索提示,输入法文字关联等,当输入一个值,可以自动搜索出可能的选择。当没有完全匹配的结果时,可以返回前缀最为相似的可能。 例如:上面的树由abcd abc abd,b等构成,红点表示可以为某 阅读全文
posted @ 2022-09-23 20:52 junlancer 阅读(96) 评论(0) 推荐(0) 编辑
摘要:引言:并查集是一种树型的数据结构,用于处理一些不相交集合(disjoint sets)的合并及查询问题,例如kruskal算法. 根据其原理我们简单实现一个. 并查集主要有两个操作:合并,查找 我们可以回忆下链表,假设某些元素都在同一个链表,我们则认为这些元素是同一个集合 如a:{1,2,3},集合 阅读全文
posted @ 2022-06-06 21:58 junlancer 阅读(37) 评论(0) 推荐(0) 编辑
摘要:题目LeetCode 736 hard 给你一个类似 Lisp 语句的字符串表达式 expression,求出其计算结果。 表达式语法如下所示: 表达式可以为整数,let 表达式,add 表达式,mult 表达式,或赋值的变量。表达式的结果总是一个整数。(整数可以是正整数、负整数、0)let 表达式 阅读全文
posted @ 2022-02-02 22:34 junlancer 阅读(37) 评论(0) 推荐(0) 编辑
摘要:审题: 在一棵无限的二叉树上,每个节点都有两个子节点,树中的节点 逐行 依次按 “之” 字形进行标记。 如下图所示,在奇数行(即,第一行、第三行、第五行……)中,按从左到右的顺序进行标记; 而偶数行(即,第二行、第四行、第六行……)中,按从右到左的顺序进行标记。 来源:力扣(LeetCode)读完题 阅读全文
posted @ 2021-08-01 01:47 junlancer 阅读(51) 评论(0) 推荐(0) 编辑
摘要:好久没更新了,因为刚换了工作,比较忙。这次更新就由这道表面hard,实则medium的题目开始吧,同时希望自己的生活工作哪怕遇到hard,但也能积极面对,最后发现其实也就那回事! 审题: 给你二叉树的根结点 root ,请你设计算法计算二叉树的 垂序遍历 序列。 对位于 (row, col) 的每个 阅读全文
posted @ 2021-08-01 01:09 junlancer 阅读(83) 评论(0) 推荐(0) 编辑
摘要:最近刷题遇到这个问题,甚是喜欢,便想着将自己整个思考的过程拿出来分享一下! 题目: 运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。 获取数据 get(key) - 如果关键字 (key) 存在于缓存中,则获 阅读全文
posted @ 2020-10-27 10:07 junlancer 阅读(194) 评论(0) 推荐(0) 编辑
摘要:class Solution { public int maxSubArray(int[] nums) { if(nums == null || nums.length == 0) return 0; return maxSubArray(nums,0,nums.length-1); } priva 阅读全文
posted @ 2020-07-23 16:17 junlancer 阅读(207) 评论(0) 推荐(0) 编辑
摘要:在一个数组中,每一个数左边比当前数小的数累加起来,叫做这个数组得小和. 比如[1,3,4,2]1左边比1小的数没有,3左边比3小的数有1,4左边比4小的数有1,3,2左边比2小的数有1.那么这个数组的小和是 1+1+3+1=6 暴力方法是每次遍历的时候,都要再把前面的比较一下,这样时间复杂度是O(n 阅读全文
posted @ 2020-06-12 17:22 junlancer 阅读(440) 评论(0) 推荐(0) 编辑
摘要:算法4讲到归并排序,也算是这本书对分治的介绍开始。分治的核心是递归,递归的思想则是大事化小,小事化了,这个“了”说明一定会有结束并开始回归。提到递归,我想很多人会和我一样,非常头疼,简单的那种尾递归,然后就一层,理解起来还是比较容易的,这个容易其实是建立在你可以思考跟踪程序的运算流程来理解。但是复杂 阅读全文
posted @ 2020-05-15 10:49 junlancer 阅读(199) 评论(2) 推荐(0) 编辑
摘要:利用递归重复翻转即可,先翻转左子树再翻转又子树都可: /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode 阅读全文
posted @ 2020-05-15 09:24 junlancer 阅读(166) 评论(0) 推荐(0) 编辑
摘要:这边提供两种方案: 1,常规二分查找里面,除法的作用只为了除以2,这个等价于右移1位,故直接更改mid的计算如下: public static int rank(int key, int[] a) { // 数组必须是有序的 int lo = 0; int hi = a.length - 1; wh 阅读全文
posted @ 2020-05-07 10:24 junlancer 阅读(451) 评论(0) 推荐(0) 编辑
摘要:思路先找出最大值,然后分割进行二分查找; private static int q1_4_20(int[] N, int key) { int l = 0; int r = N.length - 1; int aims = 0; //找最大值 while (l < r) { aims = l + ( 阅读全文
posted @ 2020-04-26 11:58 junlancer 阅读(517) 评论(0) 推荐(0) 编辑
摘要:题目要求在最坏的时候和N成正比,我们要利用好这两个有序的数组,我的思路是给两个游标,相等的时候同时移动, 不相等的时候单方移动,这边我直接就牺牲空间,创建两栈,思路可以更清晰点,相等时同时出栈,不相等时,数值大的出栈 public static void q1_4_12(int[] a, int[] 阅读全文
posted @ 2020-04-24 10:17 junlancer 阅读(248) 评论(0) 推荐(0) 编辑
摘要:这段时间我在系统的学习一下算法4,并计划学完每一章遍写一个总结,期间遇到的一些问题和思路我也想分享给大家。希望前行的路上我们一起加油! 斐波那契数列指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n) 阅读全文
posted @ 2020-04-09 10:58 junlancer 阅读(448) 评论(0) 推荐(1) 编辑
摘要:思路,主体方法调用递归,比较首位是否相同,相同则消再递归掉比较,代码逻辑清晰,待优化。 阅读全文
posted @ 2019-10-28 17:02 junlancer 阅读(175) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示