![](https://img-blog.csdnimg.cn/20190918140158853.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构与算法
Ilqjx
当下很忧郁啊
展开
-
快慢指针判断单链表是否有环(Java版)
单链表有环:是指单链表中某个节点的 next 指针指向的是链表中在它之前的某一个节点,这样在链表的尾部形成一个环形结构。解决思路:设置两个指针,一个指针一次向前走一步(慢指针),另一个指针一次向前走两步(快指针)。若链表有环,则快指针一定可以追上慢指针;若链表无环,则会走到链表末端。public class QuickSlowPointer { public boolean hasCycle(ListNode head) { ListNode slow = head;原创 2020-10-16 21:28:25 · 328 阅读 · 0 评论 -
判断对称二叉树
目录一、思路二、代码实现一、思路递归过程是这样的,只有到叶子节点才会有返回值,当一个节点的左右子节点都递归之后,接着会继续递归当前节点的父节点的右子节点,然后在继续…二、代码实现public boolean determineSymmetricalBinaryTree(TreeNode root) { return determineSymmetricalBinaryTree(root.left, root.right);}public boolean determineSymmetri原创 2020-10-22 21:30:41 · 117 阅读 · 1 评论 -
大数素数判定
/*根据数论可以把数字分为六大部分,6i、6i + 1、6i + 2、6i + 3、6i + 4、6i + 5,其中 6i、6i + 2、6i + 3、6i + 4 一定是合数,只有 6i + 1、6i + 5 才有可能是素数,所以一个数 x 对 6 取余,余数一定是 0、1、2、3、4、5 这六个数字,只有当余数为 1 或 5 时才有可能是素数,余数为 0、2、3、4 的一定是合数 */public boolean isPrimary(long num) { // 特殊处理 i原创 2020-10-22 17:39:31 · 594 阅读 · 0 评论 -
二叉树遍历
目录一、树的遍历分类二、代码实现一、树的遍历分类1.深度优先(DFS)前序遍历中序遍历后序遍历2.广度优先(BFS)层序遍历二、代码实现首先创建二叉树的节点 TreeNode 类public class TreeNode { public int val; public TreeNode left; public TreeNode right; public TreeNode(int val) { this.val = val;原创 2020-10-19 21:15:47 · 90 阅读 · 0 评论 -
汉诺塔问题
汉诺塔问题1.汉诺塔问题2.解法3.代码实现1.汉诺塔问题有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。2.解法① 将 n-1 个盘子从A杆移到B杆上② 将1个盘子从A杆移到C杆上③ 将 n-1 个盘子从B杆移到C杆上3.代码实现package com.ilqjx.csdn;原创 2020-07-03 16:14:37 · 146 阅读 · 0 评论 -
快速排序
快速排序方式一方式二方式一package com.ilqjx.csdn;import java.util.Arrays;import java.util.Scanner;public class QuickSort { public static void quickSort(int[] arr, int low, int high) { if (low >= high) { return; } int left = low; int right = high原创 2020-06-26 20:11:34 · 2878 阅读 · 1 评论 -
冒泡排序
package com.ilqjx.csdn;import java.util.Arrays;import java.util.Scanner;public class BubbleSort { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); // 数组的长度 int[] arr = new int[n];原创 2020-06-26 09:09:29 · 143 阅读 · 0 评论 -
选择排序
package com.ilqjx.csdn;import java.util.Arrays;import java.util.Scanner;public class SelectSort { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); // 数组的长度 int[] arr = new int[n];原创 2020-06-26 08:56:53 · 112 阅读 · 0 评论 -
二分查找
package com.ilqjx.csdn;public class BinarySearch { public static void main(String[] args) { // 二分查找的前提:数组必须是有序的,升序、降序都可 int[] arr = new int[]{-11, 0, 5, 98}; int num = 5; // 要查找的数 int left = 0; int right = arr.length - 1; int mid; boo原创 2020-06-25 19:57:23 · 143 阅读 · 0 评论 -
创建一个长度为6的int型数组,取值为1 - 30的随机数,同时元素值各不相同。
package com.ilqjx.csdn;import java.util.Arrays;public class Test { public static void main(String[] args) { int[] arr = new int[6]; int index = 0; // 索引 int randomDigit; // 随机数 boolean flag; // 标记变量 while (index < 6) { randomDigit原创 2020-06-25 17:46:42 · 354 阅读 · 0 评论 -
回形数
回形数方式一方式二要求:从键盘输入一个整数(1 - 20),以该数字为矩阵的大小,把 1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。方式一package com.ilqjx.csdn;import java.util.Scanner;public class RectangleTest { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int len原创 2020-06-25 17:16:07 · 213 阅读 · 0 评论 -
杨辉三角
package com.ilqjx.csdn;import java.util.Scanner;public class YangHuiTest { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); // 输入 n 作为杨辉三角的行数 scanner.close(); int[][] yangHui = new原创 2020-06-25 15:48:12 · 117 阅读 · 0 评论