05 2021 档案

摘要:插入排序详解 思路分析 插入排序即 将要插入的数寻找合适的位置插入 将一个要插入的数组分成两部分,一个有序表和一个无序表,然后将无序表中的每一个数插入到有序表中 在插入过程中,先寻找要插入的位置,然后插入 刚开始有序表可以认为是数组的第一个元素,无序表可以认为是数组中剩下的元素,然后依次插入,有序表 阅读全文
posted @ 2021-05-31 16:38 mx_info 阅读(194) 评论(0) 推荐(0) 编辑
摘要:LeetCode56.合并区间 题目描述 /** * * 以数组 intervals 表示若干个区间的集合, * 其中单个区间为 intervals[i] = [starti, endi] 。 * 请你合并所有重叠的区间,并返回一个不重叠的区间数组, * 该数组需恰好覆盖输入中的所有区间。 * */ 阅读全文
posted @ 2021-05-31 15:31 mx_info 阅读(94) 评论(0) 推荐(0) 编辑
摘要:选择排序详解 思路分析 选择排序,即选择数组中最小或者最大的数(取决于你要顺序排列还是降序排列)和数组中最前边的元素交换位置 第一次循环将最小的元素放置到数组的最前边,及最小元素和第一个元素交换位置,第二次循环将倒数第二小的元素放置到数组第二个位置,及倒数第二小元素和第二个元素交换位置,以此类推 则 阅读全文
posted @ 2021-05-30 22:22 mx_info 阅读(168) 评论(0) 推荐(0) 编辑
摘要:冒泡排序详解 思路分析 冒泡排序是使用频率较高的一种排序算法 每一次循环都将最大的数向后移动,第一次循环将最大的数移动到最后的位置,第二次循环将倒数第二大的数移动到倒数第二的位置,依次类推 外层循环 len - 1次,每次将最大的数向后移动 内层循环 len - 1 - i 次,每次比较当前数和后一 阅读全文
posted @ 2021-05-30 21:11 mx_info 阅读(170) 评论(0) 推荐(0) 编辑
摘要:LeetCode53. 最大子序和 题目描述 /** * * 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素), * 返回其最大和。 * */ 思路分析 求最大子序和,可以考虑使用递归的思路,从第一个元素开始,记录当前项的前一项子串的最大子序和 用前一项的最大子 阅读全文
posted @ 2021-05-30 11:15 mx_info 阅读(53) 评论(0) 推荐(0) 编辑
摘要:递归回溯之八皇后问题详解 说明 八皇后问题是指在 8 * 8的国际象棋棋盘上每一行放置一个皇后,要保证每一行每一列不能有重复,并且对角线也不能有重复,问总共有多少种摆法 可以使用 回溯 + 递归 的思路 每一个皇后的摆放每次都遍历 每一行的这八个位置,判断每一个位置是否可以摆一个皇后 如果可以摆放, 阅读全文
posted @ 2021-05-29 21:42 mx_info 阅读(247) 评论(0) 推荐(0) 编辑
摘要:递归回溯之迷宫问题详解 说明 迷宫问题:即设置一个入口,然后按照指定的策略寻找出口 使用二维数组模拟迷宫,设定 0 为可以走的点 ,设定 1 为迷宫的墙体,即不能走,设定 2 为可以走并且已经走过的点,设定 3 为走过但不能走通 然后设定不同的策略,可以设定先下再右再上再左,也可以设定其他策略,每一 阅读全文
posted @ 2021-05-29 17:58 mx_info 阅读(109) 评论(0) 推荐(0) 编辑
摘要:使用栈模拟完整版计算器 说明 此计算器可以计算常用的 + - * / ( ) ,但没有考虑小数点 若想实现小数的计算,可自行实现 思路分析: 将中缀表达式各元素先存储到集合 然后将中缀表达式转换为后缀表达式 进行后缀表达式的计算 源码及分析 package algorithm.stack_; imp 阅读全文
posted @ 2021-05-29 11:25 mx_info 阅读(96) 评论(0) 推荐(0) 编辑
摘要:中缀表达式转后缀表达式详解 思路分析 中缀表达式即支持运算的表达式,而方法计算式计算的则是后缀表达式,因此有必要将中缀表达式转换为后缀表达式 先将中缀表达式的各项拆分,然后存储到集合中,因为集合方便存和取以及遍历的特点 然后遍历集合中各元素,按照指定的规则,将各元素转换为后缀表达式 详解见下源码 源 阅读全文
posted @ 2021-05-29 10:55 mx_info 阅读(351) 评论(0) 推荐(0) 编辑
摘要:LeetCode50. Pow(x, n) 题目描述 /** * * 实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,x^n)。 * */ 思路分析 使用递归的思路,每次将平方的结果再平方,可节省大量时间 pow(x, n)函数实质是 n 个 x 相乘,如果n为偶数,可以通过每次平方上 阅读全文
posted @ 2021-05-29 09:45 mx_info 阅读(45) 评论(0) 推荐(0) 编辑
摘要:后缀表达式模拟逆波兰计算器详解 思路分析 先将一个表达式,即要计算的式子,也就是中缀表达式,转换为后缀表达式,每一个字符中间用空格隔开,方便字符串的分割 将后缀表达式按照空格分割后存储到集合中,集合很方便遍历、存和取 定义堆栈用来辅助计算 然后遍历集合,如果取到的是数字,则直接入栈,如果取到的是运算 阅读全文
posted @ 2021-05-28 21:14 mx_info 阅读(67) 评论(0) 推荐(0) 编辑
摘要:LeetCode43. 字符串相乘 题目描述 /** * * 给定两个以字符串形式表示的非负整数 num1 和 num2, * 返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 * */ 思路分析 使用两数竖式相乘的方法 分别遍历两个字符串的每一位,将每一位获取的字符转换为数字的 阅读全文
posted @ 2021-05-28 10:39 mx_info 阅读(60) 评论(0) 推荐(0) 编辑
摘要:LeetCode415. 字符串相加 题目描述 /** * * 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。 * */ 思路分析 按照多位数加法列竖式计算的方式 定义一个可变长字符串保存计算的结果,定义一个carry保存对应两位是否有进位 将每次计算的结果以字符从形式追加到字 阅读全文
posted @ 2021-05-27 10:14 mx_info 阅读(36) 评论(0) 推荐(0) 编辑
摘要:LeetCode42.接雨水 题目描述 /** * * 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图, * <p> * 计算按此排列的柱子,下雨之后能接多少雨水。 * */ 思路分析 使用 双指针 + 双变量 的方法 双指针分别指向数组左右两侧的索引,双变量分别保存数组左右两侧的最大值 依 阅读全文
posted @ 2021-05-26 10:43 mx_info 阅读(31) 评论(0) 推荐(0) 编辑
摘要:LeetCode41. 缺失的第一个正数 题目描述 /** * 给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。 * <p> * 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 * */ 思路分析 可以使用Hash结构的快速查找元素特性 将数组中所有 阅读全文
posted @ 2021-05-25 11:21 mx_info 阅读(34) 评论(0) 推荐(0) 编辑
摘要:LeetCode33. 搜索旋转排序数组 题目描述 /** * * 整数数组 nums 按升序排列,数组中的值 互不相同 。 * <p> * 在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转, * 使数组变为 [nums[k], nums 阅读全文
posted @ 2021-05-24 10:14 mx_info 阅读(46) 评论(0) 推荐(0) 编辑
摘要:LeetCode34. 在排序数组中查找元素的第一个和最后一个位置 题目描述 /** * * 给定一个按照升序排列的整数数组 nums,和一个目标值 target。 * 找出给定目标值在数组中的开始位置和结束位置。 * <p> * 如果数组中不存在目标值 target,返回 [-1, -1]。 * 阅读全文
posted @ 2021-05-23 10:29 mx_info 阅读(62) 评论(0) 推荐(0) 编辑
摘要:LeetCode32. 最长有效括号 题目描述 /** * * 给你一个只包含 '(' 和 ')' 的字符串, * <p> * 找出最长有效(格式正确且连续)括号子串的长度。 * */ 思路分析 基于栈的先进后出特性,可以巧妙的解决左右括号匹配的问题 即左括号先入栈,然后拿右括号来匹配,如果匹配成功 阅读全文
posted @ 2021-05-22 10:55 mx_info 阅读(76) 评论(0) 推荐(0) 编辑
摘要:LeetCode31. 下一个排列 题目描述 /** * 实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。 * <p> * 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。 * <p> * 必须 原地 修改,只允许使用额外常数空间 * 阅读全文
posted @ 2021-05-21 10:40 mx_info 阅读(39) 评论(0) 推荐(0) 编辑
摘要:LeetCode30. 串联所有单词的子串 题目描述 /** * * 给定一个字符串 s 和一些 长度相同 的单词 words 。 * 找出 s 中恰好可以由 words 中所有单词串联形成的子串的起始位置。 * <p> * 注意子串要与 words 中的单词完全匹配,中间不能有其他字符 , * 但 阅读全文
posted @ 2021-05-20 16:50 mx_info 阅读(37) 评论(0) 推荐(0) 编辑
摘要:LeetCode25. K 个一组翻转链表 题目描述 /** * * 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。 * * k 是一个正整数,它的值小于或等于链表的长度。 * * 如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。 * */ 思路分析 先获取链表 阅读全文
posted @ 2021-05-19 10:20 mx_info 阅读(47) 评论(0) 推荐(0) 编辑
摘要:LeetCode23. 合并K个升序链表 题目描述 /** * * 给你一个链表数组,每个链表都已经按升序排列。 * <p> * 请你将所有链表合并到一个升序链表中,返回合并后的链表。 * */ 思路分析 先实现将两个链表合并,然后循环合并链表数组中所有链表 合并两个链表,可以将一个链表中的所有元素 阅读全文
posted @ 2021-05-18 11:09 mx_info 阅读(80) 评论(0) 推荐(0) 编辑
摘要:LeetCode24. 两两交换链表中的节点 题目描述 /** * * 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 * <p> * 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 * */ 思路分析 使用迭代的思想,依次将两两节点进行交换 此题目中head节点指向一个 阅读全文
posted @ 2021-05-16 10:00 mx_info 阅读(52) 评论(0) 推荐(0) 编辑
摘要:LeetCode18:四数之和 题目描述 /** * 给定一个包含 n 个整数的数组 nums 和一个目标值 target, * 判断 nums 中是否存在四个元素 a,b,c 和 d , * 使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。 * <p 阅读全文
posted @ 2021-05-15 09:35 mx_info 阅读(41) 评论(0) 推荐(0) 编辑
摘要:BigInteger和BigDecimal类详解 1. 介绍 BigInteger适合保存比较大的整型 BigDecimal适合保存精度更高的浮点型 2. 常见方法 add subtract 减 multiply divide 3. 注意 在编程时,需要处理很大的整数,long不够用时,可以使用Bi 阅读全文
posted @ 2021-05-14 21:33 mx_info 阅读(94) 评论(0) 推荐(0) 编辑
摘要:System类常见方法 exit 退出当前程序 arraycopy : 复制数组元素,比较适合底层调用,一般使用Arrays.copyOf完成数组复制 currentTimeMillens :返回当前时间距离1970-1-1的毫秒数 gc:运行垃圾回收机制 阅读全文
posted @ 2021-05-14 20:52 mx_info 阅读(59) 评论(0) 推荐(0) 编辑
摘要:LeetCode17. 电话号码的字母组合 题目描述 /** * 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 * 答案可以按 任意顺序 返回。 * <p> * 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 */ 思路分析 暴力解法如下 优化解法 递归 阅读全文
posted @ 2021-05-14 10:15 mx_info 阅读(45) 评论(0) 推荐(0) 编辑
摘要:Arrays类方法说明 Arrays类里边包含了一系列静态方法,用于管理或操作数组(比如排序和搜索) toString 返回数组的字符串形式 Arrays.toString(str) sort排序(自然排序和定制排序) binarySearch 通过二分搜索法进行查找,要求必须排好序 Arrays. 阅读全文
posted @ 2021-05-13 21:06 mx_info 阅读(51) 评论(0) 推荐(0) 编辑
摘要:Math类详解 1. 基本介绍 Math类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数 2. 常用方法 abs() 绝对值 pow() 求幂 ceil() 向上取整 floor() 向下取整 round() 四舍五入 sqrt() 求开方 random() 求随机数 :返回的是 阅读全文
posted @ 2021-05-13 17:55 mx_info 阅读(174) 评论(0) 推荐(0) 编辑
摘要:LeetCode16. 最接近的三数之和 题目描述 /** * * 给定一个包括 n 个整数的数组 nums 和 一个目标值 target。 * 找出 nums 中的三个整数,使得它们的和与 target 最接近。 * 返回这三个数的和。假定每组输入只存在唯一答案。 * */ 思路分析 使用排序 + 阅读全文
posted @ 2021-05-13 10:24 mx_info 阅读(81) 评论(0) 推荐(0) 编辑
摘要:String,StringBuilder和StringBuffer的比较 StringBuilder和StringBuffer非常类似,均代表可变的字符序列,而且方法也一样 String: 不可变字符序列,效率低,但是复用率高 StringBuffer: 可变字符序列、效率较高(增删),线程安全 S 阅读全文
posted @ 2021-05-12 22:05 mx_info 阅读(107) 评论(0) 推荐(0) 编辑
摘要:StringBuilder类详解 1. 介绍 StringBuilder是一个可变的字符序列,此类提供一个与StringBuffer兼容的API,但不保证同步(StringBuilder不是线程安全),该类设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候,如果可能 阅读全文
posted @ 2021-05-12 21:52 mx_info 阅读(389) 评论(0) 推荐(0) 编辑
摘要:StringBuffer类详解 1. 基本介绍 StringBuffer代表可变的字符序列,可以对字符串内容进行增删 很多方法和String相同,但StringBuffer是可变长度的 StringBuffer是一个容器 StringBuffer是一个final类,实现了Serializable接口 阅读全文
posted @ 2021-05-12 21:36 mx_info 阅读(209) 评论(0) 推荐(0) 编辑
摘要:LeetCode19. 删除链表的倒数第 N 个结点 题目描述 /** * * 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 * <p> * 进阶:你能尝试使用一趟扫描实现吗? * */ 思路分析 要删除链表的倒数第n个节点,可以考虑先计算链表的总长度 然后用链表的 总长度 - 阅读全文
posted @ 2021-05-12 08:45 mx_info 阅读(58) 评论(0) 推荐(0) 编辑
摘要:LeetCode15. 三数之和 题目描述 /** * * 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c , * 使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。 * <p> * 注意:答案中不可以包含重复的三元组。 * */ 阅读全文
posted @ 2021-05-11 10:24 mx_info 阅读(48) 评论(0) 推荐(0) 编辑
摘要:LeetCode21. 合并两个有序链表 题目描述 /** * * 将两个升序链表合并为一个新的 升序 链表并返回。 * 新链表是通过拼接给定的两个链表的所有节点组成的。 * * */ 思路分析 合并两条有序链表可以考虑使用递归的思路 递归,即函数自己调用自己,不过在每次调用过程中,参数都要发生变化 阅读全文
posted @ 2021-05-10 09:46 mx_info 阅读(33) 评论(0) 推荐(0) 编辑
摘要:LeetCode12. 整数转罗马数字 题目描述 /** * 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 * <p> * 字符 数值 * I 1 * V 5 * X 10 * L 50 * C 100 * D 500 * M 1000 * 例如, 罗马数字 2 写做 II , 阅读全文
posted @ 2021-05-10 09:04 mx_info 阅读(60) 评论(0) 推荐(0) 编辑
摘要:String类详解 1. 说明 String对象用于保存字符串,也就是一组字符序列 字符串常量对象是用双引号括起来的字符序列 字符串的字符使用Unicode字符编码,一个字符(不区分字母还是汉字)占两个字节 String类比较常用的构造器 String s1 = new String() Strin 阅读全文
posted @ 2021-05-09 22:13 mx_info 阅读(122) 评论(0) 推荐(0) 编辑
摘要:包装类 1. 说明 针对八种基本数据类型相应的引用类型 包装类 有了类的特点,就可以调用类中的方法 基本数据类型一般是将首字母大写,然后变成相应的包装类 2. 包装类和基本数据类型的转换 Jdk5以前的手动装箱和拆箱方式,装箱:基本数据类型 >包装类型,反之拆箱 自动装箱底层调用的是valueOf方 阅读全文
posted @ 2021-05-09 21:36 mx_info 阅读(77) 评论(0) 推荐(0) 编辑
摘要:使用栈模拟简单计算器详解 1.思路分析 基于栈先进后出的特性,用来模拟一个简单计算器,进行多位数表达式加减乘除的运算 定义两个栈,一个栈用来存储数字,一个栈用来存储运算符 总体思路:将优先级高的运算符存储在符号栈栈顶,优先级低的运算符存储在符号栈的栈底 如果表达式中的字符是数字,则直接入数栈 如果是 阅读全文
posted @ 2021-05-09 11:36 mx_info 阅读(331) 评论(0) 推荐(0) 编辑
摘要:LeetCode13. 罗马数字转整数 题目描述 /** * 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 * * 字符 数值 * I 1 * V 5 * X 10 * L 50 * C 100 * D 500 * M 1000 * 例如, 罗马数字 2 写做 II ,即为两个 阅读全文
posted @ 2021-05-09 09:22 mx_info 阅读(69) 评论(0) 推荐(0) 编辑
摘要:LeetCode14. 最长公共前缀 题目描述 /** * * 编写一个函数来查找字符串数组中的最长公共前缀。 * <p> * 如果不存在公共前缀,返回空字符串 ""。 * */ 思路分析 此题目要求返回字符串数组中所有字符串的公共前缀子串 可以考虑使用化繁为简的思路,先编写一个方法可以得到两个字符 阅读全文
posted @ 2021-05-09 08:38 mx_info 阅读(67) 评论(0) 推荐(0) 编辑
摘要:Collections工具类详解 1. 介绍 Collections是一个操作Set, List和Map等集合的工具类 Collections中提供了一系列静态的方法对集合元素进行排序、查询和修改等操作 2. 排序操作(均为static方法) reverse(List):反转List中元素的顺序 s 阅读全文
posted @ 2021-05-08 16:49 mx_info 阅读(106) 评论(0) 推荐(0) 编辑
摘要:HashTable、Properties、TreeSet详解及如何选择集合实现类 1. HashTable说明 存放的是键值对,即 k - v hashTable的键和值都不能为null,否则会抛出NullPointerException hashTable使用方法基本上和HashMap一致 has 阅读全文
posted @ 2021-05-08 15:43 mx_info 阅读(77) 评论(0) 推荐(1) 编辑
摘要:HashMap底层原理详解 1. 说明 Map接口的常用实现类:HashMap, HashTable和Properties HashMap是Map接口使用频率最高的实现类 HashMap是以key - value对的方式来存储数据的(HashMap$Node类型) key不能重复,但是值可以重复,允 阅读全文
posted @ 2021-05-08 11:53 mx_info 阅读(249) 评论(0) 推荐(0) 编辑
摘要:LeetCode11. 盛最多水的容器 题目描述 /** * 给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。 * 在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。 * 找出其中的两条线,使得它们与 x 轴共同构 阅读全文
posted @ 2021-05-08 09:14 mx_info 阅读(44) 评论(0) 推荐(0) 编辑
摘要:Map接口详解 1.Map接口特点 Map 和Collection并列存在,用于保存具有映射关系的数据,即一个键值对(key -- value) Map中的key和value可以是任何引用类型的数据,会封装到HashMap$Node对象中(Node是一个内部类) Map中的key不允许重复(hash 阅读全文
posted @ 2021-05-07 22:11 mx_info 阅读(485) 评论(0) 推荐(0) 编辑
摘要:LinkedHashSet详解 1. 说明 LinkedHashSet是HashSet的子类 LinkedHashSet底层是一个LinkedHashMap,底层维护了一个数组 + 双向链表 LinkedHashSet根据元素的hashCode值来决定元素的存储位置,同时使用链表维护元素的次序,这使 阅读全文
posted @ 2021-05-07 21:42 mx_info 阅读(1599) 评论(0) 推荐(0) 编辑
摘要:数组模拟栈详解 说明 栈基于先进后出的特性,在递归,子程序的调用,深度优先算法,二叉树的遍历等方面起着重要的作用 栈可以基于基本数据类型数组实现,也可以使用链表实现 栈的常用方法为入栈和出栈,即push()和pop() 以下详细介绍用数组模拟栈的情况 源码及分析 栈类 //定义一个类表示栈 clas 阅读全文
posted @ 2021-05-07 21:18 mx_info 阅读(164) 评论(0) 推荐(0) 编辑
摘要:LeetCode6.Z字形变换 题目描述 /** * 将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。 * 比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下: * * P A H N * A P L S I I G * Y 阅读全文
posted @ 2021-05-07 09:40 mx_info 阅读(132) 评论(0) 推荐(0) 编辑
摘要:环形单向链表之约瑟夫问题详解 说明: 约瑟夫环问题可以使用单向环形链表形象的模拟解决 需要构建一个单向环形链表 然后用打印并删除节点的方式模拟小孩出圈 具体逻辑思路见代码注释 源码及分析 节点类 //创建一个小孩节点 class Boy { //小孩编号 private int no; //指向下一 阅读全文
posted @ 2021-05-06 22:29 mx_info 阅读(140) 评论(0) 推荐(0) 编辑
摘要:HashSet底层原理详解 1. 说明 HashSet实现了Set接口 HashSet底层实质上是HashMap 可以存放null值,但是只能有一个null HashSet不保证元素是有序的,取决于hash后,再确定索引的结果,即不保证存放元素的顺序和取出顺序一致 不能有重复元素/对象 2. 底层机 阅读全文
posted @ 2021-05-06 11:58 mx_info 阅读(3167) 评论(0) 推荐(0) 编辑
摘要:Set接口详解 1. 基本介绍 无序(添加和取出顺序不一致),没有索引 不允许重复元素,所以最多包含一个null SET接口常用实现类HashSet , TreeSet 2. 常用方法 和List接口一样,Set接口也是Collection的子接口,因此,常用方法和Collection接口一样 3. 阅读全文
posted @ 2021-05-06 11:21 mx_info 阅读(223) 评论(0) 推荐(0) 编辑
摘要:LeetCode5.最长回文子串 题目描述 /** * 给你一个字符串 s,找到 s 中最长的回文子串。 */ 思路分析 思路1.暴力遍历思路 第一次遍历字符串中所有字符 第二次遍历找到该字符对应所有子串 判断这些子串是否为回文数 如果是,记录最长子串并返回 暴力遍历时间复杂度太高,一般不采用 思路 阅读全文
posted @ 2021-05-06 09:35 mx_info 阅读(53) 评论(0) 推荐(0) 编辑
摘要:模拟双向链表详解 说明 双向链表通过两个指针依次将各个节点连接起来 使用next指针指向后一个节点,通过pre指针指向前一个节点 可以很好的解决删除节点时找到自身节点删除的问题,单向链表在删除某个节点时需要找到这个节点的前一个节点,而双向链表则不用 每一个节点实质为内存中的一个节点实例对象,将每个实 阅读全文
posted @ 2021-05-05 21:27 mx_info 阅读(77) 评论(0) 推荐(0) 编辑
摘要:LeetCode7. 整数反转 题目描述 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−2^31, 2^31 − 1] ,就返回 0。 思路分析 使用整数除法和取模的思路 整数每次模10,则得到这个整数的最低位,每次 阅读全文
posted @ 2021-05-05 10:00 mx_info 阅读(49) 评论(0) 推荐(0) 编辑
摘要:LeetCode4.寻找两个正序数组的中位数 题目描述 /** * 给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。 * 请你找出并返回这两个正序数组的 中位数 。 */ 思路分析(简单做法--> 归并 + 排序) 将两个数组中的元素分别添加到ArrayList集 阅读全文
posted @ 2021-05-05 08:55 mx_info 阅读(64) 评论(0) 推荐(0) 编辑
摘要:LinkedList底层结构详解 1. 说明 LinkedList底层实现了双向链表和双端队列的特点 可以添加任意元素(元素可以重复),包括null 线程不安全 2. 底层操作机制 LinkedList底层维护了一个双向链表 LinkedList中维护了两个属性first 和 last 分别指向首节 阅读全文
posted @ 2021-05-04 21:53 mx_info 阅读(415) 评论(0) 推荐(0) 编辑
摘要:逆序打印单链表详解 思路分析 思路1: 可以先将单链表反转(上一篇博客),然后打印反转后的链表,但是单链表反转会破坏原先链表的结构,对于某些情况并不使用 思路2: 基于栈的先进后出特性,可以遍历单链表,依次将每一个节点入栈 再遍历栈,在节点出栈时,最后入栈的节点先被打印,即可实现链表的逆序打印 说明 阅读全文
posted @ 2021-05-04 21:31 mx_info 阅读(260) 评论(0) 推荐(0) 编辑
摘要:leetCode2. 两数相加 1.题目描述 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 2.思路分析 1. 阅读全文
posted @ 2021-05-04 10:24 mx_info 阅读(82) 评论(0) 推荐(0) 编辑
摘要:单链表反转详解 1. 获取单链表有效节点的个数 思路分析(见源码) 源码及分析 //思路分析: //简单:遍历单链表记录链表长度并返回 //获取单链表的有效节点的个数 public static int getLength(HeroNode head) { //先判断该链表是否为空 if (head 阅读全文
posted @ 2021-05-03 22:45 mx_info 阅读(158) 评论(0) 推荐(0) 编辑
摘要:Vector和ArrayList比较 1. Vector基本介绍 1. Vector底层也是一个对象数组,protected Object[] elementData 2. Vector是线程同步的,即线程安全,因为Vector类的操作方法带有synchronized关键字 3. 需要线程同步时,考 阅读全文
posted @ 2021-05-03 17:23 mx_info 阅读(48) 评论(0) 推荐(0) 编辑
摘要:ArrayList底层结构和源码分析 1 . 注意事项 1). ArrayList允许所有类型的元素加入,也可以是null,并且多个 2). ArrayList是由数组来实现数据存储的 3). ArrayList基本等同于Vector,除了ArrayList是线程不安全的,但是执行效率高,在多线程情 阅读全文
posted @ 2021-05-03 17:14 mx_info 阅读(135) 评论(0) 推荐(0) 编辑
摘要:List接口详解 1. 基本介绍 List接口是Collection接口的子接口 1.List集合类中元素有序(即添加顺序和取出顺序一致),且可重复 2.List集合中的每个元素都有其对应的顺序索引,即支持索引 3.List容器中的元素都对应一个整数性的序号记载其在容器中的位置,可以根据序号存取容器 阅读全文
posted @ 2021-05-03 16:58 mx_info 阅读(246) 评论(0) 推荐(0) 编辑
摘要:Collection接口和常用方法 Collection接口实现类的特点 collection实现子类可以存放多个元素,每个元素可以是object 有些collection的实现类,可以存放重复的元素,有些不可以 有些collection的实现类,有些是有序的(List),有些是无序的(Set) C 阅读全文
posted @ 2021-05-03 16:45 mx_info 阅读(204) 评论(0) 推荐(0) 编辑
摘要:集合的理解和好处 使用数组保存多个数据的不足的地方分析 长度开始时必须指定,而且一旦指定,不能修改 保存的必须为同一类型的元素 使用数组进行增加或者删除元素比较麻烦 //数组扩容示意代码 Person[] pers = new Person[1]; pers[0] = new Person(); / 阅读全文
posted @ 2021-05-03 16:43 mx_info 阅读(161) 评论(0) 推荐(0) 编辑
摘要:leetCode49.字母异位词分组 题目描述 /** * 给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。 */ 思路分析 字母异位词,及他们所包含的每一个字符相同,但是排列顺序相同,要将这些排列顺序不同的字符串加入到同一个集合中,就要找出他们的相同点 很明显 阅读全文
posted @ 2021-05-03 09:12 mx_info 阅读(47) 评论(0) 推荐(0) 编辑
摘要:模拟单链表详解 单链表说明与分析 单链表是日常使用中常见的一种数据结构 单链表由一个个节点组成,每一个节点有数据域和指针域两部分,数据域存储具体要存储的数据,而指针域则存储节点指向的下一个节点,通过指针域将节点串起来 单链表在内存中的存储不是连续的,每一个节点和另一个节点可以存储在不同的地址空间,即 阅读全文
posted @ 2021-05-02 22:43 mx_info 阅读(83) 评论(0) 推荐(0) 编辑
摘要:leetcode26.删除有序数组中的重复项 题目描述 /** * 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 , * 返回删除后数组的新长度。 * <p> * 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 阅读全文
posted @ 2021-05-02 09:18 mx_info 阅读(59) 评论(0) 推荐(0) 编辑
摘要:数组模拟环形队列 思路分析 为解决普通队列在取出元素后当前位置无法再添加元素造成的空间浪费问题,提出环形队列,可重复的使用一段空间 还是使用数组模拟环形队列,定义指针front指向队列的第一个元素,rear指向队列最后一个元素的后一个位置 环形队列涉及一些取模算法,须认真琢磨 源码及分析 //数组模 阅读全文
posted @ 2021-05-01 22:09 mx_info 阅读(119) 评论(0) 推荐(0) 编辑
摘要:数组模拟队列 思路分析 队列基于先进先出的特性,在日常使用中频率较高 队列可基于基础数据结构数组或链表模拟(本文介绍用数组模拟) 基于面向对象思想,创建一个队列抽象类,每一个实例化对象则都为一个实体队列可进行数据的各种模拟 具体分析及源码如下 模拟源码及分析 //数组模拟队列 class Array 阅读全文
posted @ 2021-05-01 11:02 mx_info 阅读(53) 评论(0) 推荐(0) 编辑
摘要:leetcode35.搜索插入位置 题目描述 /** * 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。 * 如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 * <p> * 你可以假设数组中无重复元素。 */ 思路分析: 看到要查找数组中的元素值,新手考虑到的肯定是遍历查 阅读全文
posted @ 2021-05-01 09:36 mx_info 阅读(42) 评论(0) 推荐(0) 编辑

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