![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
朱朱呀
这个作者很懒,什么都没留下…
展开
-
Java数据结构之单调栈 - 剑指offerII 039 直方图最大矩形面积
给定非负整数数组 heights ,数组中的数字用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/0ynMMM著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。class Solution { public int largestRectangleArea(int[] heights) {原创 2021-09-05 16:26:19 · 177 阅读 · 0 评论 -
Java数据结构之单调栈 - leedcode1856 子数组最小乘积的最大值
前缀和数组等相关类型应该是long,溢出了,所以之前逻辑没问题但是却一直不对一个数组的 最小乘积 定义为这个数组中 最小值 乘以 数组的 和 。比方说,数组 [3,2,5] (最小值是 2)的最小乘积为 2 * (3+2+5) = 2 * 10 = 20 。给你一个正整数数组 nums ,请你返回 nums 任意 非空子数组 的最小乘积 的 最大值 。由于答案可能很大,请你返回答案对 109 + 7 取余 的结果。请注意,最小乘积的最大值考虑的是取余操作 之前 的结果。题目保证最小乘积的最.原创 2021-09-05 15:24:14 · 136 阅读 · 0 评论 -
Java数据结构之双端队列 -剑指offer59题 滑动窗口的最大值
看完视频讲解再自己写 耗时45min(不算看视频时间)给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值--------------- -----[1 3 -1] -3 5 3 6 7 3 1 [3 -1 -3] 5 .原创 2021-09-05 09:02:17 · 93 阅读 · 0 评论 -
Java数据结构之快速排序1.0/2.0/3.0+荷兰国旗问题
速排序1.0/2.0/3.0+荷兰国旗问题package SortAlgorithm;import java.util.Arrays;public class FastSort { public FastSort(){ } // 快速排序1.0版本 public void fast1_0(int[] arr,int L,int R,int num){ if(arr == null || arr.length < 2 || R ==.原创 2021-07-19 11:52:27 · 345 阅读 · 0 评论 -
Java数据结构之归并排序+求数组小和/降序对(新)
> 归并排序```javapackage SortAlgorithm;import java.util.Arrays;public class MergeSort { public MergeSort(){ } // 二分法 递归 求解归并排序 // 递归实现 public void MergeSort1(int[] arr, int L, int R){ if(R == L){ // 数组只有一个值直接返回原创 2021-07-16 11:28:57 · 124 阅读 · 0 评论 -
Java常用类之时间类
用户输入年月日,制作输出万年历的那种格式,并且在输入的日期旁标*。import java.util.Calendar;import java.util.Date;import java.util.Scanner;public class CalendarIn { int year = 2021; int month = 7; int day = 21; public CalendarIn() { } public CalendarIn.原创 2021-07-02 16:13:35 · 73 阅读 · 0 评论 -
Java常用类之枚举类
为JavaSE课程三个单元定义枚举:U1,U2,U3分别表示初级,中级,高级,编程输出每个单元的学习目标。package Enum_;public enum CourseEnum { U1("初级","了解"),U2("中级","熟悉"),U3("高级","精通"); CourseEnum(String name,String goal){ this.name = name; this.goal = goal; } priva.原创 2021-07-02 11:22:50 · 238 阅读 · 0 评论 -
Java数据结构之用递归实现归并排序(好难啊!!!)
package Recursive_Algorithm;import java.util.Arrays;public class MergeSort { int len = 20; int arr [] = new int[len]; public MergeSort(){ for(int i = 0;i < len;i++){ arr[i] = (int)(Math.random() * len);原创 2021-06-07 16:52:37 · 98 阅读 · 0 评论 -
Java数据结构之用递归求数组最大值
package Recursive_Algorithm;import java.util.Arrays;public class ArrayMaxValue { int len = 20; int arr [] = new int[len]; int L = 0; int R = len - 1; public ArrayMaxValue(){ for(int i = 0;i < len;i++){ ar原创 2021-06-01 13:45:31 · 457 阅读 · 0 评论 -
Java数据结构之用队列结构实现栈结构
package LinkList;public class StackByQueue extends QueueByArray{ QueueByArray queue = new QueueByArray(); public StackByQueue(){ super(); } public StackByQueue(int len){ super(len); queue.len = len; }原创 2021-05-13 21:56:21 · 64 阅读 · 0 评论 -
Java数据结构之用栈结构实现队列结构
用两个栈来回倒package LinkList;// 用栈实现队列 --两个栈来回倒public class QueueByStack extends StackByArray { // 是一个栈,能用所有栈的属性和方法 StackByArray stack = new StackByArray(); // 用来倒栈中元素,该栈的出栈顺序与队列相同 public QueueByStack(int len){ super(len); } pub.原创 2021-05-13 15:34:42 · 123 阅读 · 0 评论 -
Java数据结构之用O(1)实现返回栈中最小元素的功能
增加一个最小值栈用来存放最小值package LinkList;public class StackgetMin extends StackByArray{ StackByArray stackMin = new StackByArray(); int min = 100000; public StackgetMin(){ } public StackgetMin(int len){ super(len); } .原创 2021-05-13 14:54:31 · 115 阅读 · 0 评论 -
Java数据结构之用双向链表实现队列的入队和出队
package LinkList;public class QueueByDoubleLink extends DoubleLinkList { // 双链表入队操作 ---尾插法-倒序输入 出队-从head正序输出 public void enQueue(int a){ TailInsertDoubleLinkList(a); } // 双链表出队操作 ---从head删除链表元素 public int deQueue(){原创 2021-05-13 12:56:56 · 360 阅读 · 0 评论 -
Java数据结构之用双向链表实现栈的入栈和出栈操作
package LinkList;// 使用双链表 定义栈的基本操作public class StackByDoubleLink extends DoubleLinkList { // 栈继承自双链表// DoubleNode head = null; // 双链表压栈操作 --- 向双链表插入一个元素 public void push(int a){ HeadInsertLinkList(a); // 返回压栈后的链表 } // 双链表原创 2021-05-13 12:50:29 · 575 阅读 · 0 评论 -
Java数据结构之用数组实现栈的入栈和出栈操作
package LinkList;public class StackByArray{ // 数组长度 int len = 20; // 创建一个长度为20的数组 int[] arr = new int[len]; // 定义栈顶和栈底 int top_flag = 0; // 栈顶 -- 数组最后一个数的下一个位置 public StackByArray(){ } public StackByArray(int l原创 2021-05-13 12:45:23 · 1101 阅读 · 0 评论 -
Java数据结构之用数组实现队列的入队和出队操作
package LinkList;public class QueueByArray{ // 数组长度 int len = 20; // 数组 int[] arr = new int[len]; // 队头标志 int head_flag = 0; // 与队列中第一个元素对齐 // 队尾标志 int tail_flag = -1; // 与队列中最后一个元素对齐 int size = 0; // 队列中元素的个数原创 2021-05-13 12:41:13 · 733 阅读 · 0 评论 -
Java数据结构之链表——头插法逆置双链表
定义双链表基本操作package Link;class DoubleNode{ public int value; // 该结点所保存的值 public DoubleNode next; // da该结点下一个结点指针 public DoubleNode last; // da该结点上一个结点指针 public DoubleNode(int data){ value = data; next = null; la.原创 2021-04-25 20:43:07 · 345 阅读 · 0 评论 -
Java数据结构之链表——头插法逆置单链表
单链表的就地逆置是指辅助空间O(1)的逆置方法,使用头插法。定义单链表的基本操作package Link;class Node{ // 定义单链表借点类 public int value; // 该结点所保存的值 public Node next; // da该结点下一个结点指针 public Node(int data){ value = data; next = null; } public Node(){.原创 2021-04-25 20:39:20 · 700 阅读 · 0 评论 -
Java数据结构之位运算——求某整数的二进制中1的个数
输入一个整数,求该整数的二进制表示中1的个数。public class CountOneTimes { public int ExtractRightOne(int a){ int a_r1 = a & ((~a) +1); //提取最右侧的1 return a_r1; } public int countonetimes(int a){ TenToTwo(a); int count = 0;.原创 2021-04-17 13:38:58 · 181 阅读 · 0 评论 -
Java数据结构之位运算——找到数组中出现奇数次的两个数(只有两个)
一个数组中有两种数出现了奇数次,其他数都出现了偶数次,怎么找到并打印这两种数。思路:对数组所有的数进行异或运算,偶数个数的数异或结果为0,将这两个要找的数标记为A、B,也就是最终结果为A、B异或的结果,此时取出右边第一个1,A、B在此位置的值不相同,一个为1,另一个为0,根据这个特点将这些数据分为两两组,分别异或.import java.util.Arrays;public class SearchOddTimesNumber { public int searchOddTime.原创 2021-04-17 13:11:44 · 334 阅读 · 0 评论 -
Java数据结构之位运算——提取某整数最右侧的1
a = a & ((~a) +1); //提取最右侧的1public class ExtractRightOne { public ExtractRightOne(int a){ String str = TenToTwo(a); System.out.println(a + "的二进制为:" + str); a = a & ((~a) +1); //提取最右侧的1 str = TenToTwo(a);.原创 2021-04-14 17:05:25 · 834 阅读 · 2 评论 -
Java数据结构之异或运算——找到数组中唯一出现奇数次的数
已知数组长度为n,且其中只有一个数字出现过奇数次,其他数字都出现偶数次,找出出现奇数次的这个数。public class SearchOddTimesNumber { public SearchOddTimesNumber(int [] arr){ int len = arr.length; int a = arr[0]; for(int i = 1;i < len;i++){ a = a ^ arr[i];.原创 2021-04-14 16:43:25 · 277 阅读 · 0 评论 -
Java数据结构之异或运算——不使用额外变量交换两个数
异或运算(^)1.任何数异或0 都为自己本身2.任何数和自己异或都为0前提是:两个变量值可以相同,但所指向的内存要不一样,才能使用异或运算来交换。public class Swap { public Swap(int a,int b){ a = a ^ b; // a^b b = a ^ b; // a^b^b=a a = a ^ b; // a^b^a=b System.out.println("交换后:a=" + .原创 2021-04-14 16:31:38 · 154 阅读 · 0 评论 -
Java数据结构之数组——二分法查找有序数组某数最左/右侧的位置
public class SearchLeftNumber { public void searchleftnumber(int[] arr,int mid){ if(mid == 0){ System.out.println("数值" + arr[mid] + "在数组中最左侧的位置是:" + mid); return; } while(arr[mid] == arr[mid-1] &&原创 2021-04-13 22:05:24 · 2551 阅读 · 3 评论 -
Java数据结构之数组——二分法查找有序数组中某个值
边界问题public class SearchNumber { public SearchNumber(int[] arr,int a){ int len = arr.length; if(len == 0){ System.out.println("数组为空!所查找数值" + a + "不存在!"); } int left = 0; int right = len-1; //.原创 2021-04-13 20:52:48 · 373 阅读 · 0 评论 -
Java数据结构之数组——求局部最小值
二分法。有时候数组无序,同样可以采用二分法。这道题考察的是全局观,左边下降趋势,右边上升趋势,函数图像呈凹形,必有极小值。中左值和中值呈上升趋势,中值右边可以直接舍弃;中值和中右值呈下降趋势,中值左边可以直接舍弃。public class LocalMin { public LocalMin(int[] arr){ int length = arr.length; if(length == 0){ System.out.println.原创 2021-04-13 17:14:50 · 423 阅读 · 0 评论 -
Java数据结构之数组——插入排序
一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:从第一个元素开始,该元素可以认为已经被排序;取出下一个元素,在已经排序的元素序列中从后向前扫描;如果该元素(已排序)大于新元素,将该元素移到下一位置;重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;将新元素插入到该位置后;重复步骤2~5import java.util.Arrays;public class InsertSort { public static void main(Strin.原创 2021-04-13 11:33:48 · 350 阅读 · 0 评论 -
Java面向对象之类和对象
1.请定义一个交通工具(Vehicle)的类其中有:属性: 速度(speed)、 体积(size)等,方法:移动(move())、设置速度(setSpeed(int speed))、加速 speedUp()、减速 speedDown()等。最后在测试类 Vehicle 中的 main()中实例化一个交通工具对象并通过方法给它初始化 speed,size 的值并且通过打印出来。另外调用加速、减速的方法对速度进行改变。public class Vehicle { private int spe.原创 2021-04-06 20:21:18 · 59 阅读 · 0 评论 -
Java面向对象之get/set方法+带参构造函数+static变量/常量
问题运用面向对象思想抽象出Dog类和Penguin类类型:狗 企鹅属性:昵称 健康值 性别 品种行为:输出信息添加默认构造方法Dog类import java.util.Scanner;public class Dog { private String name; private double health;//健康值 private String gender;//性别 private String class_name;//品种 publ原创 2021-03-27 11:12:58 · 1171 阅读 · 0 评论 -
Java面向对象之方法调用——定义一个二维“点”
定义一个“点”(Point)类用来表示二维空间中的点(有二个坐标)。要求如下:– 可以生成具有特定坐标的点对象。– 提供可以设置二个坐标的斱法。– 提供可以计算该“点”距另外点距离的方法。– 代码实现交换point中两个坐标的值(实现用对象作为参数)public class Point { double x; double y; //设置两个坐标值 public Point(double x1,double y1){ x = x1; .原创 2021-03-25 09:47:17 · 4202 阅读 · 0 评论 -
Java面向对象之创建和使用对象——定义管理员类并修改密码
import java.util.Scanner;public class Administrator { int id; String password; String name; int age; String limit; //管理员权限 public void introduce(){ System.out.println("----------------------------"); System.out.原创 2021-03-24 21:03:16 · 4910 阅读 · 0 评论 -
Java面向对象之创建和使用对象——定义学生/教师类并输出相关信息
学生类import java.util.Scanner;public class Student { String name = "张三"; int age = 16; String grade = "三年二班" ; String fancy = "打篮球 唱歌 读书 冒险"; public void introduce(){ System.out.println("-------------------------------------原创 2021-03-24 20:10:03 · 12893 阅读 · 0 评论 -
Java数据结构之数组——冒泡排序/选择排序
public class BubbleSort{ public static void main(String[] args){ int tmp = 0; int [] array = {7,10,6,1,11,4,8,2,9,14,5,3,15,13,12,}; for(int i = 1;i <= array.length;i++){ for(int j = 0;j < array.length-i;j++){ if(array.原创 2021-03-23 20:17:56 · 147 阅读 · 0 评论 -
Java基础语法之二维数组——创建并输出二维数组各元素的值
二维数组的还是有点点复杂的。还是得写才行,光看真的看不出来问题。public class ArrayTwoPractice{ public static void main(String[] args){ //int B[2][] ={{1,2},{2,3},{4,5}}; //为什么int B[2][] 中[]里有值会报错? //创建二维数组 int a[][] = {{1,2},{2,3,4,5},{5,6,7}}; //输出二维数组各元素的值 fo.原创 2021-03-22 21:28:10 · 3888 阅读 · 0 评论 -
Java基础语法之数组练习——循环输出数列的值并求和
import java.util.Scanner;public class ArrayPractice{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int [] list = new int[]{8,4,2,1,23,344,1}; int sum = 0; System.out.print("请输入任意数字:"); int number = sc.next原创 2021-03-22 17:42:22 · 3244 阅读 · 2 评论 -
Java基础语法之数组——保存并打印26个英文字母
不写不知道,一写吓一跳!看过了并不代表会写,比如letter = new char[26];要new type[];才行!数组下标从0开始!public class Letter{ public static void main(String[] args){ //保存输出26个英文字母 char[] letter; letter = new char[26]; for(int i = 0;i < 26;i++){ letter[i] = (c.原创 2021-03-22 17:21:50 · 3202 阅读 · 0 评论 -
Java基础语法之多重循环——打印九九乘法口诀
public class Multi99{ public static void main(String[] args){ for(int i = 1;i <= 9;i++){ for(int j = 1;j <= i;j++){ System.out.print(j + "*" + i + "=" + (i *j) + "\t"); } System.out.println(); } }}原创 2021-03-22 11:40:47 · 143 阅读 · 0 评论 -
Java基础语法之循环+continue——斐波那契数列
斐波那契数列斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368……特别指出:第0项是0,第1项是第一个1。这个数列从第三项开始,每一项都等于前两项之和。import java.util.Scanner;public class Fabonacci{ public static void main(原创 2021-03-22 11:29:05 · 233 阅读 · 0 评论 -
Java基础语法之多重循环——百钱买百鸡问题
百钱买百鸡问题公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,用100文钱买一百只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱。public class Chicken{ public static void main(String[] args){ for(int i = 1;i <= 20;i++){ for(int j = 1;j <= 33;j++){ for(int k =1;k <=原创 2021-03-22 11:02:04 · 636 阅读 · 0 评论 -
Java基础语法之多重循环——打印倒等边三角形
import java.util.Scanner;public class Triangle{ public static void main(String[] args){ Scanner sc =new Scanner(System.in); System.out.println(""); int side_length; //******************************************************* System.原创 2021-03-22 10:38:39 · 418 阅读 · 0 评论