
Java数据结构与算法
「已注销」
这个作者很懒,什么都没留下…
展开
-
剑指 Offer II 007. 数组中和为 0 的三个数
剑指 Offer II 007. 数组中和为 0 的三个数剑指 Offer II 007. 数组中和为 0 的三个数class Solution { public List<List<Integer>> threeSum(int[] nums) { //一共三个指针,n1,n2,n3 //遍历过程为: n1逐个向右,n1不动的情况下,n2/n3进行移动:1.-n1=n2+n3时,n2向右(排除向右中大小相同的).n3向左(同样排除)原创 2022-03-11 21:29:21 · 302 阅读 · 0 评论 -
LeetCode 476. 数字的补数 利用 熟悉题目的解法 对 陌生问题进行解决
LeetCode 476. 数字的补数本篇文章特点:利用 熟悉题目的解法 对 陌生问题进行解决,所以很容易理解先看题目,方便讲解。题目如下:对整数的二进制表示取反(0 变 1 ,1 变 0)后,再转换为十进制表示,可以得到这个整数的补数。例如,整数 5 的二进制表示是 "101" ,取反后得到 "010" ,再转回十进制表示得到补数 2 。给你一个整数 num ,输出它的补数。示例 1:输入:num = 5输出:2解释:5 的二进制表示为 101(没有前导零位),其补数为 010。所以你原创 2021-10-19 00:22:20 · 378 阅读 · 3 评论 -
栈 模拟计算器
用栈 模拟简单的计算器/* 制作计算器的步骤: 1.有两个栈分别存放 数字 和 运算符 2.对于输入的字符串 从头到尾先取数字,将数字入栈、运算符入栈、再将数字入栈、再将运算符入栈。 3.运算符入栈的条件是:1.栈空;2.栈顶的运算符比入栈的运算符优先级低。 4.如果优先级不高于栈顶 就将栈顶的符号取出 然后从取出数字栈中取两个数字,进行计算,计算结果入数字栈 再次判断 入栈的 运算符 是否高于 栈顶的。 5.直到字符串遍历完。再将运算符栈、数字栈中原创 2021-08-06 21:51:58 · 423 阅读 · 0 评论 -
数组模拟栈
数组模拟栈虽然Java中包含许多好用的集合用来应对各种数据的处理情况。但是经典的栈结构,必须要会写的。/* 用数组模拟栈 */import java.util.Scanner;public class ArrayStackTest { public static void main(String[] args) { //测试 ArrayStack ArrayStack stack = new ArrayStack(4); Syst原创 2021-08-06 21:49:46 · 168 阅读 · 0 评论 -
环形链表的实现,解决Joseph(约瑟夫)问题.
环形链表环形链表的经典问题:Joseph(约瑟夫)问题./* 实现环形单链表 */public class Joseph { public static void main(String[] args) { // 测试一把看看构建环形链表,和遍历是否ok CircleSingleLinkedList circleSingleLinkedList = new CircleSingleLinkedList(); circleSingleL原创 2021-08-06 21:47:19 · 193 阅读 · 0 评论 -
双向链表的实现
双向链表的实现双向链表是单向链表的进阶。虽然相比于单链表很多方法都方便了许多。但是也有几个难点需要注意。/* 双向链表的实现 重点:双向链表中间插入节点时,彼此的指向需要认真考虑。 往往有一对操作的前后顺序是固定的 难点:addByOrder() 中 判断条件 */public class DoubleLinkedListTest { public static void main(String[] args) { // 测试原创 2021-08-06 21:45:01 · 168 阅读 · 0 评论 -
单链表的实现 - 吹毛求疵版
单链表的实现或许最简单的事情细节最多。单链表中也是有很多值得思考的东西。有些变量为什么赋这个值,而不能赋那个值?本可以200行搞定的单链表。写了许多注释,就到400行左右了。当然其中也有些暂时没有解决的问题。各位大佬,不吝赐教!!/* 单链表的实现 未掌握的基础: //head = reverseHead; 只改变了reverseList栈中的head中的地址. 而head本身是main中复制来的。 本质上main中的原创 2021-08-06 00:00:40 · 174 阅读 · 0 评论 -
数组模拟队列、环形队列 - 虽然简单但是细节很多
数组模拟队列下面的两个代码中 细节处都有注释。如果有任何高见或疑问,可以在下方留言。博主日更,欢迎留言交流。/* 数组模拟队列 问题:1. 何时提醒,何时报错? 2. showQueue中无效元素也都输出了 知识点:Scanner需要关闭。 Scanner平时配合System.in标准输入流来使用,in是InputStream类型,一个字节流。 scanner的close()调用的是Inputstream的close()。在平时自己学习时可以原创 2021-08-04 13:19:06 · 152 阅读 · 0 评论 -
综合运用IO、二维数组知识实现稀疏数组,能够存入磁盘及从磁盘读取,并还原为原始二维数组 - 基础就是建造高楼大厦的沙砾
稀疏数组的基本介绍当一个数组中大部分元素为0,或者为同一个值得情况时,可以使用稀疏数组来保存该数组。稀疏数组的预览:大体可以的到一个结论,在一个二维数组中,如果相同值占2/3以上时,利用稀疏数组能节约大量空间。整体代码如下由于稀疏数组作为数据结构中较简单的,因此在一个类中即可实现/* 稀疏数组的实现: 疑问:fori 和 foreach 哪个效率更高?答案:两者对程序的影响很小。程序的效率主要看程序设计。 */import java.io.*;public clas原创 2021-08-03 21:45:23 · 309 阅读 · 0 评论