![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
烟花丿易冷
这个作者很懒,什么都没留下…
展开
-
Leetcode刷题攻略
Leetcode刷题攻略原创 2021-04-02 15:01:49 · 240 阅读 · 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 · 154 阅读 · 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 · 181 阅读 · 0 评论 -
leetcode算法练习--盛最多水的容器
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimpor原创 2021-02-27 22:15:11 · 76 阅读 · 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 · 151 阅读 · 0 评论 -
leetcode算法练习--无重复字符串的最长字串
无重复字符串的最长字串题目思路代码总结题目给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。思路采取滑动窗口法代码/** * 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 */public class Solution { public static void main(String[] args) { String s="abcabcbb"; System.out.println(lengthOfLongest原创 2021-02-26 14:59:48 · 102 阅读 · 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 · 230 阅读 · 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 · 150 阅读 · 0 评论 -
源码学习----LinkedList简析
LinkedList源码分析欢迎使用Markdown编辑器add方法remove方法iterator分析LinkedList的使用场景欢迎使用Markdown编辑器LinkedList是链表的结构,是双向链表add方法先说一下具体思路,作为链表结构,那么添加元素就是在链表的末尾插入元素,这个过程中要考虑:末尾元素为nullpublic boolean add(E e) { linkLast(e); return true;}void linkLast(E e)原创 2020-10-21 15:51:25 · 93 阅读 · 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 · 81 阅读 · 0 评论 -
算法练习之插入排序,希尔排序,归并排序不一样的解读
插入排序,希尔排序,归并排序层层递进的方式进行解读评判一个算法的好坏一、插入排序二、希尔排序三、归并排序稳定性总结评判一个算法的好坏1.时间效率2.空间复杂度3.比较次数&交换次数4.稳定性排序肯定会牵涉比较,排序的稳定性是:相同的数据排完序后相对位置不变。明显第2种的红色3排完序后相对位置并没有变化为什么要有稳定排序?电商里面订单排序:首先会按金额从小到大排,金额相同的按下单时间。我从订单中心过来的时候已经按照时间排好序了。如8:01 6520:05 3021原创 2021-01-01 19:02:34 · 122 阅读 · 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 · 118 阅读 · 0 评论 -
算法练习之括号匹配,栈来解决
栈一、问题描述二、代码解决1.构建基础栈2.用栈的特性来进行匹配总结一、问题描述如何设计一个括号匹配的功能?比如给你一串括号让你判断是否符合我们的括号原则,如下所示:[(){()}{}]符合{}[]{[][[][][]{{}[}}{}}]]] 不符合二、代码解决1.构建基础栈代码如下(示例):public interface MyStack<Item> { MyStack<Item> push(Item item); //入栈 Item pop();原创 2020-12-20 20:06:16 · 252 阅读 · 0 评论 -
算法练习之约瑟夫问题--(难度2颗星),单向循环链表解决
单向循环链表解决前言一、何为约瑟夫问题二、代码实现总结前言数据结构与算法是程序员的内功,有时间还是要练习一、何为约瑟夫问题约瑟夫问题是个有名的问题:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。例如N=6,M=5,被杀掉的顺序是:5,4,6,2,3,1。现在问你最后留下的人是谁?比如N=6,M=5留下的就是11 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 · 162 阅读 · 1 评论 -
由一道算法题,引出计数排序
计数排序来看题上代码小结来看题题目:给定N个自然数(1<N<10),每个数的范围在(1-100之间),用最快的速度判断某个数在不在这N个数之内 例:N=510,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 · 67 阅读 · 0 评论 -
Java手写排序------选择排序、冒泡排序
当在程序中用BigDecimal类型接收时,如果查出来是null,则要进行处理,否则后续操作会引起NPE问题原创 2020-11-21 00:02:51 · 257 阅读 · 0 评论 -
算法练习之Java手写LRUCache
Java实现LRUCache前言一、双向链表基础代码二、LRU实现总结前言运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(key, value) - 如果密钥不存在,则写入其数据值。当缓存容量达到上限时,它应该在写入新数据之前删除最近最少使用的数据值,从而为新的数据值留出空间。原创 2020-10-25 00:25:13 · 932 阅读 · 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 · 1814 阅读 · 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 · 65 阅读 · 0 评论