C/Java
C/Java 学习代码
爱干饭的猿
道阻且长,行且将至
展开
-
【Java基础】泛型+反射+枚举+Lambda表达式 知识点总结
本文重点介绍Java基础:泛型、反射、枚举、Lambda表达式知识点总结。原创 2022-11-12 19:08:45 · 2796 阅读 · 9 评论 -
Java 七大排序代码合集
1.七大排序详解请见:《Java 七大排序(详解 + 代码 + 变种)》2. 代码合集:import java.util.ArrayDeque;import java.util.Deque;import java.util.concurrent.ThreadLocalRandom;/** * 七大排序 * * @author haomin * @date 2022/03/17 20:34 **/public class SevenSort { // 取随机数原创 2022-03-20 22:29:33 · 1539 阅读 · 14 评论 -
Java 七大排序(详解 + 代码 + 变种)
目录1. 概念1.1 排序1.2 稳定性(重要)1.3 应用2. 七大基于比较的排序-总览2.1 内部排序 & 外部排序a. 内部排序(在内存中)b. 外部排序(依赖硬盘)3. 七大排序0: 交换三连1. 冒泡排序2. 选择排序a. 单向选项排序b. 双向选项排序3. 直接插入排序a. 直接插入排序 b. 折半插入排序4.希尔排序5. 堆排序6. 归并排序a. 归并排序 b. 归并...原创 2022-03-20 22:20:59 · 1983 阅读 · 32 评论 -
Java 二分搜索树实现 - 完整代码
目录1.二分搜索树:1.1 概念1.2 重点操作1.3 完整代码1.二分搜索树:1.1 概念a.是个二叉树(每个节点最多有两个子节点)b.对于这棵树中的节点的节点值左子树中的所有节点值 < 根节点 < 右子树的所有节点值二分搜索树中一般不考虑值相等的情况(元素不重复)JDK中的搜索树就不存在相同的值(TreeMap-key)最大特点:也是判断是否是搜索树的方法对该树进行中序遍历,就可以得到一个升序集合0 1 2 3 4 5 6 7 8原创 2022-03-16 09:33:14 · 1426 阅读 · 30 评论 -
Java 堆 & 优先级队列(下)
目录1.优先级队列1.1 概念1.2 内部原理1.3 操作-入队列3.4 操作-出队列(优先级最高)3.5 借用堆实现优先级队列1.实现一个接口2.堆完整代码见上节3.优先级队列3.6 测试1.优先级队列1.1 概念 在很多应用中,我们通常需要按照优先级情况对待处理对象进行处理,比如首先处理优先级最高的对象,然后处理次高的对象。最简单的一个例子就是,在手机上玩游戏的时候,如果有来电,那么系统应该优先处理打进来的电话。在这种情况下,我们的数据结构应该提原创 2022-03-04 17:31:36 · 3245 阅读 · 16 评论 -
Java 堆 & 优先级队列(上)
目录1. 二叉树的顺序存储1.1 存储方式1.2 下标关系2. 堆(heap)2.1 概念2.2 操作-(下沉&上浮)本例是最大堆2.3 建堆-完整代码(最大堆)3. 优先级队列1. 二叉树的顺序存储1.1 存储方式使用数组保存二叉树结构,方式即将二叉树用层序遍历方式放入数组中。一般只适合表示完全二叉树,这种方式的主要用法就是堆的表示。因为非完全二叉树会有空间的浪费(所有非完全二叉树用链式存储)。1.2 下标.原创 2022-03-04 17:30:28 · 846 阅读 · 15 评论 -
Java 二叉树基础概念(递归&迭代)
目录1. 树型结构1.1概念1.2 概念(重要)2. 二叉树(重点)2.1 概念2.2 二叉树的基本形态2.3 两种特殊的二叉树2.4 二叉树的性质a.满二叉树b.完全二叉树2.5二叉树的存储2.6 二叉树的基本操作2.6.1 二叉树的遍历 (递归)2.6.2二叉树的遍历 (迭代)2.6.3二叉树的基本操作2.7二叉树的层序遍历3.二叉树完整代码1. 树型结构1.1概念树是一种非线性的数据结构,它是由n(...原创 2022-02-22 17:26:48 · 1063 阅读 · 25 评论 -
Java 二叉树完整代码(递归&迭代)
Java 二叉树完整代码(递归&迭代)原创 2022-02-22 17:27:27 · 2288 阅读 · 15 评论 -
Java【力扣155】最小栈
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop()—— 删除栈顶的元素。top()—— 获取栈顶元素。getMin() —— 检索栈中的最小元素。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/min-stack代码如下:class MinStack { private Stack<Integer> s1=n..原创 2022-01-24 10:00:00 · 179 阅读 · 1 评论 -
Java 【力扣20】有效的括号
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid-parentheses代码如下:class Solution { public boolean isValid(String s) { Stack<Char.原创 2022-01-24 09:00:00 · 315 阅读 · 1 评论 -
Java 栈(Stack) & 队列(Queue)
1. 栈(Stack) 1.1 概念栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈 顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。 出栈:栈的删除操作叫做出栈。出数据在栈顶。1.2 实现1. 利用顺序表实现,即使用尾插 + 尾删的方式实现 2.利用链表实现,则头尾皆可 相对来说,顺序表的实..原创 2022-01-23 21:48:53 · 867 阅读 · 1 评论 -
Java 认识异常(模拟王者登录异常)
异常的基本语法:(模拟王者登录游戏的执行过程)原创 2022-01-22 23:38:18 · 668 阅读 · 0 评论 -
Java 建立一个双向链表(增删查改)
双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。代码如下:package seqlist.doublelinked;public class DoubleLinkedList { private int size; private Node head; private Node tail; //增 p原创 2021-12-08 11:20:27 · 745 阅读 · 0 评论 -
Java 【力扣234】判断回文链表
给你一个单链表的头节点head,请你判断该链表是否为回文链表。如果是,返回true;否则,返回false。代码如下:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * List...原创 2021-12-06 08:00:00 · 569 阅读 · 0 评论 -
Java 【力扣876】链表的中间结点
给定一个头结点为head的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。代码如下:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(...原创 2021-12-05 22:00:02 · 336 阅读 · 0 评论 -
Java 剑指 Offer 22. 链表中倒数第k个节点
输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。代码如下:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * List原创 2021-12-05 21:57:02 · 578 阅读 · 0 评论 -
Java 【力扣206】反转链表(3种方法)
给你单链表的头节点head,请你反转链表,并返回反转后的链表。链表代码:package seqlist.leetcode;public class ListNode { int val; ListNode next; public ListNode(){ } public ListNode(int val){ this.val=val; } public ListNode(int val,ListNode nex..原创 2021-12-05 21:53:07 · 364 阅读 · 0 评论 -
Java 建立一个单链表(增删查改)
链表是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的 。代码如下:package seqlist;public class SingLeLinkedList { private int size; private Node head; //增 public void addFirst(int val){ // 新建一个车厢节点 Node node=new Node(val);原创 2021-12-03 17:14:16 · 423 阅读 · 0 评论 -
Java 模拟登录游戏(模拟三次密码输入的场景)
编写代码模拟三次密码输入的场景。最多能输入三次密码,密码正确,提示“登录成功”,密码错误,可以重新输入,最多输入三次。三次均错,编写代码模拟三次密码输入的场景。 最多能输入三次密码,密码正确,提示“登录成功”,密码错误, 可以重新输 入,最多输入三次。三次均错,则提示退出程序。mport java.util.Scanner;public class Test14 { public static void main(String[] args) { int compu.原创 2021-11-28 23:00:25 · 2934 阅读 · 0 评论 -
Java 递归算法之斐波那契数列第 N 项
斐波那契数列(Fibonacci sequence),也称之为黄金分割数列,由意大利数学家列昂纳多・斐波那契(Leonardo Fibonacci)提出。斐波那契数列指的是这样的一个数列:1、1、2、3、5、8、13、21、34、……,这个数列从第 3 项开始,每一项都等于前面两项之和。在数学上,斐波那契数列可以被递推的方法定义如下:F(1)=1,F(2)=1,F(n)=F(n – 1)+F(n – 2)(n≥ 3,n∈ N*)1.斐波那契数列的递归终止条件显然易见,通过观察斐波那契数列的定...原创 2021-11-28 09:00:00 · 2597 阅读 · 0 评论 -
Java 建立一个顺序表(增删改查)
Java 建立一个顺序表原创 2021-11-27 19:14:57 · 2987 阅读 · 0 评论 -
Java 求 N 的阶乘(递归)
递归求 N 的阶乘import java.util.Scanner;public class Test28 { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.println("请输入N:"); int num =scanner.nextInt(); int s=func(num); .原创 2021-11-27 17:37:45 · 544 阅读 · 0 评论 -
Java 冒泡排序
冒泡排序算法原理1、从后往前依次比较相邻的元素。若是要按照升序排序,则后面的元素比前面的小,就交换这2个元素;降序则相反。2、对每一对相邻元素作同样的工作,从第一对到最后一对。进行一轮比较交换下来,最后的元素就会是最小(或最大)的数了,这个数就不用参与后面的比较操作了。3、针对所有的元素重复以上的步骤。4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。为了尽量缩短待排序表的长度,避免下一次扫描中可能出现的不必要的比较,在每次扫描过程中,一方面要记录进行元素交换的次原创 2021-11-26 21:52:41 · 516 阅读 · 0 评论 -
Java 猜数字小游戏
完成猜数字游戏 ,用户输入数字,判断该数字是大于,小于,还是等于随机生成的数字,等于的时候退出程序。//随机数生成import java.util.Random;import java.util.Scanner;public class Test07 { public static void main(String[] args) { //随机数生成 Random random=new Random(); Scanner scanner.原创 2021-11-24 21:07:13 · 3021 阅读 · 1 评论 -
Java 水仙花数 两种方法(递归&循环)
水仙花数所谓的水仙花数是指:一个n位数( n23 ),它的每个位上的数字的n 次所谓的水仙花数是指:一个n位数(N23),它的每个位上的数字的n次幂之和等于它本身幂之和等于它本身。例如:153,370,371,407等都是水仙花数,就拿153来说,153 =1*1*1 +5*5*5 +3*3*3. 幂之和等于它本身.例如153,370,371,407等都是水仙花数,就拿153来说,153=1*1*1+5*5+3*3。满足上面的条件就是水仙花数,否则不是。在编写代码的过程中,重点是如何分 满足上面原创 2021-11-23 11:00:00 · 2268 阅读 · 0 评论 -
Java 实现一个方法 transform, 以数组为参数, 循环将数组中的每个元素 乘以 2 , 并设置到对应的数组元素上. 例如 原数组为 {1, 2, 3}, 修改之后为 {2, 4, 6}
实现一个方法 transform, 以数组为参数, 循环将数组中的每个元素 乘以 2 , 并设置到对应的数组元素上. 例如 原数组为 {1, 2, 3}, 修改之后为 {2, 4, 6}public class Test32 { public static void main(String[] args) { int[] arr={1,2,3}; System.out.print("原数组:"); printArr(arr); .原创 2021-11-22 21:19:36 · 733 阅读 · 0 评论 -
Java 创建一个 int 类型的数组, 元素个数为 100, 并把每个元素依次设置为 1 - 100
创建一个 int 类型的数组, 元素个数为 100, 并把每个元素依次设置为 1 - 100public class Test34 { public static void main(String[] args) { int[] arr=new int[100]; set(arr); printArr(arr); } private static void printArr(int[] arr) { for .原创 2021-11-21 23:41:52 · 1902 阅读 · 0 评论 -
Java 类和对象重点笔记
类和对象:(oop 面向对象编程)类:模板,规定了该类所具备的属性和行为对象:类的一个实例,不同对象千差万别,主要是属性值不同类的定义:class 类名称{ 属性 行为方法 其他类}类命名:1.大驼峰 (例:ClassTest)2.一个源文件必须与该文件中的一个主类同名(public class),源文件中主类有且只有一个3.一个源文件可存在多个普通类,直接用class声明的类,不加classpublic class Test43 {原创 2021-11-22 10:30:00 · 111 阅读 · 0 评论 -
Java 数组重点笔记
数组的定义与引用:(引用数据类型)1.数组:存放相同数据类型的一个合集2.创建数组的两种方式:静态初始化:int[] =arr={1,3,5};动态初始化:int[] arr=new int[3];int[] arr=new int[3]{1,3,5};3.数据访问和长度:取得一个数组长度 数组名称.length取得数组元素长度arr[index]->索引 (索引->偏移量)4.数组的遍历:遍历:按照一定的顺序访问该集合中所有元素for..原创 2021-11-22 09:45:00 · 261 阅读 · 0 评论 -
Java 给你一个整数数组 arr,请你判断数组中是否存在连续三个元素都是奇数的情况: 如果存在,请返回 true ;否则,返回 false 。
给你一个整数数组 arr,请你判断数组中是否存在连续三个元素都是奇数的情况: 如果存在,请返回 true ;否则,返回 false 。示例 1:输入:arr = [2,6,4,1]输出:false解释:不存在连续三个元素都是奇数的情况。示例 2:输入:arr = [1,2,34,3,4,5,7,23,12]输出:true解释:存在连续三个元素都是奇数的情况,即 [5,7,23] 。public class Test35 { public static void main.原创 2021-11-21 07:30:00 · 1038 阅读 · 0 评论 -
Java 给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。
给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。public class Test36 { public static void main(String[] args) { int[] arr={1,2,3,4,6,7,8,9,1,1,1,1,1,1,1,1,1}; isManyNum(arr); } private sta.原创 2021-11-21 07:15:00 · 544 阅读 · 0 评论 -
Java 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4public class Test37 { public static void main(String[] args) { int[] arr={2,2,1}; int[] arr2={4,1,2,1,2}; findTwe(arr.原创 2021-11-21 07:00:00 · 1812 阅读 · 0 评论 -
Java 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那 两个 整数,并返回它们的数组下标。
//给定一个整数数组 nums 和一个整数目标值 target,// 请你在该数组中找出和为目标值 target 的那 两个 整数,并返回它们的数组下标。//你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。//你可以按任意顺序返回答案。//示例 1://输入:nums = [2,7,11,15], target = 9//输出:[0,1]//解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。public class T.原创 2021-11-20 19:30:57 · 2163 阅读 · 1 评论 -
Java 给定一个整型数组, 判定数组是否有序(递增)
给定一个整型数组, 判定数组是否有序(递增)public class Test39 { public static void main(String[] args) { int[] arr={1,2,3,4,5,6}; int[] arr2={1,3,2,4,5,6}; isOrd(arr); isOrd(arr2); } private static void isOrd(int[] arr) { .原创 2021-11-20 19:26:15 · 1552 阅读 · 1 评论 -
Java 给定一个有序整型数组, 实现二分查找
给定一个有序整型数组, 实现二分查找public class Test40 { public static void main(String[] args) { int[] arr={1,2,3,4,5,6,7,8}; int tofind=4; toSearch(arr,tofind); } private static void toSearch(int[] arr, int tofind) { int .原创 2021-11-20 19:24:47 · 839 阅读 · 5 评论 -
Java 实现一个方法 copyOf, 对一个整型数组进行拷贝, 得到一个新的数组.
实现一个方法 copyOf, 对一个整型数组进行拷贝, 得到一个新的数组.public class Test41 { public static void main(String[] args) { int[] arr={1,2,3,4,5}; int[] arr2=new int[arr.length]; copyArr(arr,arr2); printArr(arr2); } private static.原创 2021-11-20 19:23:36 · 572 阅读 · 0 评论 -
Java 求出0~999之间的所有“水仙花数”并输出
求出0~999之间的所有“水仙花数”并输出。(“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本 身,如;153=1+5+3?,则153是一个“水仙花数“。)public class test9 { public static void main(String[] args) { for (int i = 1; i <1000; i++) { if(i>=1 && i<10){ .原创 2021-11-19 23:58:48 · 535 阅读 · 0 评论 -
Java 方法重点笔记
1.方法定义:方法是类似于c的函数方法就是一个代码片段,可重复使用,将代码抽象为方法public static 返回值声明【void】 方法名称 (参数类型 参数名称){ 【return 返回值】;}//定义一个方法两个整数相加//有没有返回值取决与方法功能public static int add(int a,int b){ return a+b;}//方法调用:主方法调用int num1=10;int num2=20;int sum=a...原创 2021-11-17 21:41:59 · 243 阅读 · 0 评论 -
Jave 关于部分Math类和欧几里得算法
用这个类中的方法,直接类名称,方法名Math.sqrt(num); //求平方根Math.pow(a,b); //a^b (次方)Math.abs(num); //绝对值Math.max(a,b); //求较大值Math.min(a,b); //求较小值# 快速修复IDEA的报错 alt+enter数据结构:用一定结构来存储数据算法:用一定规则来操作一组数据排序算法:20实际最伟大的算法之一(快速排序)(RSA加密算法基本思想)欧几里得算法:int原创 2021-11-17 21:21:34 · 83 阅读 · 0 评论 -
Java-运算符&输入输出重点笔记
1. ^:异或 (相同为0,不同为1) ~:按位取反(int a=15, ~a=16, 值取反-1)2.移位运算符(移位运算比算术运算快) << 左移(*2) << 右移(/2) >>> 无符号右移3.条件运算符 三目运算符 (a>b?a:b;)注释种类:1.单行注释://2.多行注释:/* */3.文本注释:/** */ (用在方法和类上)Java 输入输出:...原创 2021-11-16 11:19:19 · 434 阅读 · 4 评论