数据结构和算法
哪有天生的学霸,一切都是厚积薄发
天道酬勤,商道酬信,学道酬苦,业道酬精 ,人道酬诚。
展开
-
字符串压缩
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 · 523 阅读 · 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 · 147 阅读 · 0 评论 -
输入两个正整数m和n,求其最大公约数和最小公倍数
思路分析:在循环中,只要除数不等于0,用较大数除以较小的数,将小的一个数作为下一轮循环的大数, 取得的余数作为下一轮循环的较小的数,如此循环直到较小的数的值为0,返回较大的数, 此数即为最小公约数,最小公倍数为两数之积除以最小公倍数。 import java.util.Scanner; public static void main(String[] args) { Scan...原创 2020-03-02 12:00:56 · 1352 阅读 · 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 · 347 阅读 · 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 · 6892 阅读 · 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 · 3247 阅读 · 6 评论 -
合并两个有序数组
一、题目有两个排序的整数数组,分别是数组1和数组2,将数组2合并到数组1中,合并以后的数组1,仍是有序数组。提示:数组1有m个元素,数组2有n个元素可以假设数组1有足够的空间(大于m+n)去容纳从数组2得到的额外的元素。二、思路思路1:从前往后构造数组,拿array2中的最前面的元素跟array1中的最前面的元素比较,找到正确的排序 以后插入,然后把array1后面的元素都向后移一...原创 2019-04-13 15:33:55 · 894 阅读 · 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 · 283 阅读 · 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 · 190 阅读 · 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 · 275 阅读 · 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 · 251 阅读 · 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 · 196 阅读 · 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 · 149 阅读 · 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 · 208 阅读 · 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 · 162 阅读 · 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 · 151 阅读 · 0 评论 -
计算单链表的倒数第k个节点
这个题的感觉很像比如要你计算100的倒数第5个数是多少?不就是 100 - 5 = 95public 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 · 207 阅读 · 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 · 805 阅读 · 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 · 125 阅读 · 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 · 1206 阅读 · 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 · 166 阅读 · 0 评论