
数据结构和算法
哪有天生的学霸,一切都是厚积薄发
天道酬勤,商道酬信,学道酬苦,业道酬精 ,人道酬诚。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
字符串压缩
https://blog.csdn.net/qq_27035123/article/details/779438 /** * Description: 字符串压缩<br/> * Copyright (c) , 2019, XLJ <br/> * This program is protected by copyright laws. <br/> * Pr...原创 2019-04-04 23:21:43 · 551 阅读 · 0 评论 -
删除排序数组中的重复项
public int removeDuplicates(int[] nums) { if (nums.length == 0) return 0; int i = 0; for (int j = 1; j < nums.length; j++) { if (nums[j] != nums[i]) { i++; ...原创 2019-01-19 17:54:59 · 172 阅读 · 0 评论 -
输入两个正整数m和n,求其最大公约数和最小公倍数
思路分析: 在循环中,只要除数不等于0,用较大数除以较小的数,将小的一个数作为下一轮循环的大数, 取得的余数作为下一轮循环的较小的数,如此循环直到较小的数的值为0,返回较大的数, 此数即为最小公约数,最小公倍数为两数之积除以最小公倍数。 import java.util.Scanner; public static void main(String[] args) { Scan...原创 2020-03-02 12:00:56 · 1401 阅读 · 0 评论 -
九九乘法表
/** * 九九乘法表 */ public static void test(){ for (int i = 1;i <= 9; i++){ for (int j = 1;j <= i; j++){ System.out.print(j + "*" + i +"="+(i*j)+"...原创 2020-03-02 12:02:05 · 389 阅读 · 0 评论 -
将100以内的所有质数输出
方法一: * 方法一 * 根据质数的定义得出的方法 */ public static void isPrimeNumber2(){ System.out.println("100以内的质数是: " + 2); System.out.println("100以内的质数是: " + 3); System.out.pr...原创 2020-03-03 10:44:12 · 7019 阅读 · 1 评论 -
编写程序,从键盘上输入2019年的 “month” 和 “day“ 要求通过程序输出输入的日期为2019年的第几天
编写程序,从键盘上输入2019年的 “month” 和 “day” 要求通过程序输出输入的日期为2019年的第几天 public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入年:"); int y...原创 2020-03-03 12:05:50 · 3338 阅读 · 6 评论 -
合并两个有序数组
一、题目 有两个排序的整数数组,分别是数组1和数组2,将数组2合并到数组1中,合并以后的数组1,仍是有序数组。 提示: 数组1有m个元素,数组2有n个元素 可以假设数组1有足够的空间(大于m+n)去容纳从数组2得到的额外的元素。 二、思路 思路1: 从前往后构造数组,拿array2中的最前面的元素跟array1中的最前面的元素比较,找到正确的排序 以后插入,然后把array1后面的元素都向后移一...原创 2019-04-13 15:33:55 · 931 阅读 · 0 评论 -
只出现一次的数字
用scala写的 第一种 object Solution { def singleNumber(nums: Array[Int]): Int = { nums.foldLeft(0)((re, r) =&gt; re^r) } } 第二种 def singleNumber(nums: Array[Int]): Int = { val map1 = new mut...原创 2019-01-19 16:31:18 · 317 阅读 · 0 评论 -
存在重复元素
给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k。 第一种: public static boolean containsNearbyDuplicate(int[] nums, int k) { int i=0,j =0; //最后一个不用比较 for (int m = 0;m &l...原创 2020-02-29 11:48:25 · 201 阅读 · 0 评论 -
用数组模拟栈
import java.util.Scanner; public class StackArrayDemo { public static void main(String[] args) { //创建StackArray对象 StackArray stackArray = new StackArray(4); Scanner scanner = new Scanner(System.in); boolean loop = true;原创 2020-06-30 23:16:58 · 314 阅读 · 0 评论 -
双向链表的增删查改
上图是双向链表按照编号顺序添加节点的图 temp是头节点的辅助节点,开始temp = head, node是下一个要加入的节点 修改节点比较简单就没写 可以先看代码 public class DoubleLinkListDemo3 { public static void main(String[] args) { HHeroNode3 hHeroNode1 = new HHeroNode3(1); HHeroNode3 hHeroNode2 = new HHero.原创 2020-06-30 22:46:16 · 286 阅读 · 0 评论 -
约瑟夫问题
创建环形链表的思路: 1 构建一个单向的环形链表思路: 1)先创建第一个节点,让first指向该节点,并形成环形 2)后面当我们每创建一个新的节点,就把该节点加入到已有的环形链表中即可。 2 遍历环形链表 1)先让一个辅助指针(变量),指向first节点 2)然后通过一个while循环遍历该环形链表即可 curBoy.next = first 结束 public class CircleSingleLinkListDemo_1 { public static void main(String[..原创 2020-06-30 22:35:43 · 215 阅读 · 0 评论 -
用数组模拟环形队列
import java.util.Scanner; public class ArrayQueueDemo1 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); //初始化一个队列 ArrayQueue1 arrayQueue = new ArrayQueue1(4); char key = ' ';//接收用户输原创 2020-06-30 22:32:10 · 174 阅读 · 0 评论 -
用数组模拟队列的增删查改
Description: 用数组模拟队列,存在的问题是:数组只能用一次,没有达到复用的效果,将这个数组使用算法,改成环形的队列 取模 % import java.util.Scanner; public class ArrayQueueDemo { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); //初始化一个队列 ArrayQue原创 2020-06-30 22:29:30 · 236 阅读 · 1 评论 -
二维数组和稀疏数组互换
public class SpareArray { public static void main(String[] args) { //创建一个原始数组 11*11 int chessArr[][] = new int[11][11]; chessArr[1][2] = 1; chessArr[2][3] = 2; chessArr[4][5] = 2; //输出原始的二维数组 Sy.原创 2020-06-30 22:26:17 · 194 阅读 · 0 评论 -
单链表的增删查改
class SingleLinkList4{ //创建头节点 private Hero head = new Hero(0); public Hero getHead() { return head; } //删除节点 public void del(int no){ if (head.getNext() == null){ System.out.println("链表为空!!!");原创 2020-06-30 22:19:08 · 178 阅读 · 0 评论 -
计算单链表的倒数第k个节点
这个题的感觉很像比如要你计算100的倒数第5个数是多少? 不就是 100 - 5 = 95 public static Hero getK(Hero head,int index){ if (head .getNext() == null){ System.out.println("链表为空!!!"); return null; } int size = getSize(head); //链表的有效节点个数原创 2020-06-30 22:12:28 · 256 阅读 · 0 评论 -
计算单链表的有效节点个数
public static int getSize(Hero head){ if (head.getNext() == null){ System.out.println("链表为空!!!"); return 0; } Hero temp = head.getNext(); int sum = 0; while (temp != null){ sum .原创 2020-06-30 22:09:15 · 839 阅读 · 0 评论 -
将单链表进行反转
//将单链表进行反转 public static void reverse(Hero head){ if (head.getNext() == null || head.getNext().getNext() == null){ System.out.println("链表的数据为空,或者只有一个节点"); return; } Hero temp = head.getNext(); Hero next原创 2020-06-30 22:08:07 · 153 阅读 · 0 评论 -
将两个有序的单链表进行合并
/** * 将两个有序的单链表进行合并 * @param head1 * @param head2 */ public static void l1Unionl2(Hero head1, Hero head2) { if (head1.getNext() == null || head2.getNext() == null){ System.out.println("链表为空!!!"); ret.原创 2020-06-30 22:06:24 · 1245 阅读 · 0 评论 -
java语言 --- 用数组模拟栈和用链表模拟栈
1.用数组模拟栈 import java.util.Scanner; public class ArrayStackDemo1 { public static void main(String[] args) { ArrayStack1 arrayStack1 = new ArrayStack1(5); Scanner scanner = new Scanner(System.in); boolean loop = true; Stri原创 2020-05-23 17:33:39 · 195 阅读 · 0 评论