
算法
文章平均质量分 52
烟花丿易冷
这个作者很懒,什么都没留下…
展开
-
Leetcode刷题攻略
Leetcode刷题攻略原创 2021-04-02 15:01:49 · 295 阅读 · 0 评论 -
LeetCode8. 字符串转换整数 (atoi)---非常巧妙的自动状态机
非常巧妙的自动状态机题目绝妙的代码解析 题目 绝妙的代码 class Solution { public static void main(String[] args) { Solution solution=new Solution(); System.out.println(solution.myAtoi("word 312 w")); } public int myAtoi(String str) { Automaton a原创 2021-03-23 11:24:02 · 260 阅读 · 0 评论 -
单链表典型题目
单链表典型题目单链表反转剑指 Offer 25. 合并两个排序的链表题目代码剑指 Offer 22. 链表中倒数第k个节点题目代码剑指 Offer 06. 从尾到头打印链表题目代码 单链表反转 在这里插入代码片 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 剑指 Offer 25. 合并两个排序的链表 题目 代码 class ListNode { int val; ListNode next; ListNode(int x) {原创 2021-03-22 16:03:06 · 440 阅读 · 0 评论 -
leetcode算法练习--盛最多水的容器
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码如下(示例): import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns impor原创 2021-02-27 22:15:11 · 125 阅读 · 0 评论 -
leetcode算法练习--搜索旋转排序数组
搜索旋转排序数组题目思路代码 题目 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …, nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2] 。 给你 旋转原创 2021-02-27 10:56:04 · 251 阅读 · 0 评论 -
leetcode算法练习--无重复字符串的最长字串
无重复字符串的最长字串题目思路代码总结 题目 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 思路 采取滑动窗口法 代码 /** * 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 */ public class Solution { public static void main(String[] args) { String s="abcabcbb"; System.out.println(lengthOfLongest原创 2021-02-26 14:59:48 · 234 阅读 · 0 评论 -
leetcode算法练习---二叉搜索树中第K小的元素
BST中第K小的元素题目描述思路代码 题目描述 给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。 思路 利用二叉搜索树的中序遍历是单调递增 则第K小的就是第K-1的值 在栈的帮助下,可以将方法一的递归转换为迭代,这样可以加快速度,因为这样可以不用遍历整个树,可以在找到答案后停止。 代码 public class Solution { public static void main(String[] args) {原创 2021-02-26 11:54:12 · 390 阅读 · 0 评论 -
算法练习之求最大公约数与素数判定
算法练习之求最大公约数与素数判定最大公约数给定一个数,判断是否为素数 最大公约数 /** * 求最大公约数,辗转相除法 */ public class MaxCommonDivisor { public static void main(String[] args) { int a=42; int b=12; while (true){ if(a<b){ b=b-a;原创 2021-02-19 15:57:54 · 212 阅读 · 0 评论 -
源码学习----LinkedList简析
LinkedList源码分析欢迎使用Markdown编辑器add方法remove方法iterator分析LinkedList的使用场景 欢迎使用Markdown编辑器 LinkedList是链表的结构,是双向链表 add方法 先说一下具体思路,作为链表结构,那么添加元素就是在链表的末尾插入元素,这个过程中要考虑:末尾元素为null public boolean add(E e) { linkLast(e); return true; } void linkLast(E e)原创 2020-10-21 15:51:25 · 234 阅读 · 0 评论 -
LeetCode算法练习之链表问题(阿里算法题)
给定输入,根据需求进行输出问题代码总结 问题 代码 /** * (2 -> 4 -> 3) + (5 -> 6 -> 4) * 7 -> 0 -> 8 * Explanation 342+465=807 */ public class LbQuestion { private LNode head; private LNode tail; public LbQuestion() { this.head = null;原创 2021-01-06 14:25:10 · 156 阅读 · 0 评论 -
算法练习之插入排序,希尔排序,归并排序不一样的解读
插入排序,希尔排序,归并排序层层递进的方式进行解读评判一个算法的好坏一、插入排序二、希尔排序三、归并排序稳定性总结 评判一个算法的好坏 1.时间效率 2.空间复杂度 3.比较次数&交换次数 4.稳定性 排序肯定会牵涉比较,排序的稳定性是:相同的数据排完序后相对位置不变。 明显第2种的红色3排完序后相对位置并没有变化 为什么要有稳定排序? 电商里面订单排序:首先会按金额从小到大排,金额相同的按下单时间。我从订单中心过来的时候已经按照时间排好序了。如 8:01 65 20:05 30 21原创 2021-01-01 19:02:34 · 231 阅读 · 0 评论 -
算法练习之队列创建,循环队列
利用链表构建队列利用链表实现个队列循环队列 利用链表实现个队列 public class LinkQueue { public Node head; public Node tail; public LinkQueue() { this.head = this.tail=null; } //尾插法 public void push(int m){ //入队列 O(1) Node node=new Node(m);原创 2020-12-21 17:26:44 · 153 阅读 · 0 评论 -
算法练习之括号匹配,栈来解决
栈一、问题描述二、代码解决1.构建基础栈2.用栈的特性来进行匹配总结 一、问题描述 如何设计一个括号匹配的功能?比如给你一串括号让你判断是否符合我们的括号原则,如下所示: [(){()}{}]符合{}[]{[][[] [][]{ {}[}}{}}]]] 不符合 二、代码解决 1.构建基础栈 代码如下(示例): public interface MyStack<Item> { MyStack<Item> push(Item item); //入栈 Item pop();原创 2020-12-20 20:06:16 · 403 阅读 · 0 评论 -
算法练习之约瑟夫问题--(难度2颗星),单向循环链表解决
单向循环链表解决前言一、何为约瑟夫问题二、代码实现总结 前言 数据结构与算法是程序员的内功,有时间还是要练习 一、何为约瑟夫问题 约瑟夫问题是个有名的问题:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。例如N=6,M=5,被杀掉的顺序是:5,4,6,2,3,1。 现在问你最后留下的人是谁? 比如N=6,M=5 留下的就是1 1 2 3 4 5 6 => 6 1 2 3 4 => 6 1 2 3 =>1 2 3 => 1 3 => 1原创 2020-12-19 20:42:39 · 239 阅读 · 1 评论 -
由一道算法题,引出计数排序
计数排序来看题上代码小结 来看题 题目: 给定N个自然数(1<N<10),每个数的范围在(1-100之间),用最快的速度判断某个数在不在这N个数之内 例:N=5 10,50,60,1,5 判断7在不在 上代码 代码: import java.util.Random; import java.util.Scanner; public class ArrayPractice { public static void main(String[] args) { //给原创 2020-12-05 21:39:51 · 108 阅读 · 0 评论 -
Java手写排序------选择排序、冒泡排序
当在程序中用BigDecimal类型接收时,如果查出来是null,则要进行处理,否则后续操作会引起NPE问题原创 2020-11-21 00:02:51 · 346 阅读 · 0 评论 -
算法练习之Java手写LRUCache
Java实现LRUCache前言一、双向链表基础代码二、LRU实现总结 前言 运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。 获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。 写入数据 put(key, value) - 如果密钥不存在,则写入其数据值。当缓存容量达到上限时,它应该在写入新数据之前删除最近最少使用的数据值,从而为新的数据值留出空间。原创 2020-10-25 00:25:13 · 1027 阅读 · 0 评论 -
你还不知道什么是红黑树?了解下
红黑树原理解析红黑树的4条性质红黑树的变换例子加以讲解最后贴上整构建过程实现代码 红黑树的4条性质 每个节点不是黑色就是红色 根节点是黑色 不能有两个红色节点相连所有叶子节点都是黑色的空节点NIL,也就是说,叶子节点不能存储数据 每个节点,从该节点到达其可达叶子节点的所有路径,都包含相同数目的黑色节点 红黑树的变换 为了满足红黑树的性质,因此出现了变色和旋转。 改变颜色,最简单,红变黑,黑变红。 左旋:针对于点旋,但是点上面的子树也跟着转。 右旋 先看下左旋和右旋的动图。 左旋: 以E节点为原创 2020-10-21 11:15:06 · 34 阅读 · 0 评论 -
花了3个小时,终于搞懂BitMap了!!!
Java手写BitMap有这么个需求运算符分析下BitMapbyte数组实现BitMapint数组实现BitMapBitMap的缺点 有这么个需求 如何在3亿个整数(0~2亿)中判断某一个数是否存在?内存限制500M,一台机器。 在这里就用BitMap实现 说代码实现前,先来点基础知识 运算符 异或运算符(^) 运算规则:0^0=0; 0^1=1; 1^0=1; 1^1=0;即:参加运算的两个对象,如果两个相应位为“异”(值不同),则该位结果为1,否则为0。 位与(&): 同位上的原创 2020-10-18 19:41:45 · 2265 阅读 · 0 评论 -
闲来无事来一道阿里算法题
判断一个数是不是2的N次方前言代码 前言 本题我利用了递归和位移来解决的,大家可以自己想想其他的办法 代码 public class CalculateNum{ public static final int finallyNum=1; public static int cal(int num){ if(num<=0){ return num; } if(num % 2 !=0){ ret原创 2020-10-03 08:05:18 · 127 阅读 · 0 评论