笔记
curelmn
这个作者很懒,什么都没留下…
展开
-
链表练习题(二)
1.在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。解题思路:首先创建一个带傀儡节点的新链表来存放没有重复节点的链表。因为题目已知是排序的链表,所以只需要判断相邻两节点是否相等,就可以判断是否存在重复节点并且删除。如果有重复节点就跳过,如果不是重复节点就插入到新链表当中。class ListNode{ int val=0; ListNode next=null; public ListNode(int val){翻译 2021-07-31 15:31:31 · 90 阅读 · 0 评论 -
栈和队列
1.栈(Stack)1.1 概念栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据在栈顶。1.2 实现利用顺序表实现。即使用 尾插+尾删。利用链表实现,则头尾皆可//用顺序表实现public class MyStack { priv原创 2021-03-09 21:57:55 · 115 阅读 · 0 评论 -
Java实现双向链表的增删查改
1.插入节点 头插2.插入节点 尾插3.指定位置插入节点4.删除头节点5.删除尾节点6.根据下标删除节点7.根据值删除节点8.根据下标查找节点位置9.查找节点的值10.修改节点的值import java.util.Scanner;class Node{ int val; Node prev=null; Node next=null; public Node(int val){ this.val=val; } @Ov原创 2021-03-08 11:01:01 · 87 阅读 · 0 评论 -
Java 实现链表的基础操作(1.通过遍历达到查找元素的目的)
已知一条链表,不知道其长度的情况下:通过遍历,打印链表的每个元素。通过遍历,找到链表的最后一个结点。通过遍历,找到链表的倒数第二个结点。通过遍历,找到链表的第 n 个结点。(链表的长度 >= n)通过遍历,计算链表中元素的个数。通过遍历,找到链表中是否包含某个元素。具体实现如下:package Test_0202;public class Node { public int val; public Node next=null;原创 2021-02-02 16:26:29 · 256 阅读 · 0 评论 -
Java 实现顺序表的基础操作(增删查改)
1.从尾部插入数据2.从中间任意位置插入位置3.按照下标位置删除元素,返回结果是被删除的元素4.按照元素的内容来删除元素,返回true/false5.根据下标获取元素6.根据下标获取元素7.判断元素是否存在8.查找元素的位置(从前往后)9.查找元素的位置(从后往前)10.清空顺序表11.求表中的有效元素个数12.判断是否为空表注:1.打印的时候,需要重写toString方法2.如果表长不够,需要扩容具体实现如下:package Test0201;import java.原创 2021-02-02 16:37:49 · 405 阅读 · 2 评论 -
打印杨辉三角形 Java
leetcode:https://leetcode-cn.com/problems/pascals-triangle/题解: public static List<List<Integer>> generate(int numRows){ if(numRows<=0) { return new ArrayList<>();//直接返回一个空的List } List<Li.原创 2021-02-01 19:35:18 · 116 阅读 · 0 评论 -
JavaSE 知识点思维导图
画了超久的!!!!原创 2021-01-28 19:09:17 · 1129 阅读 · 0 评论 -
验证回文串
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: “A man, a plan, a canal: Panama”输出: true示例 2:输入: “race a car”输出: false来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid-palindrome著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。c原创 2021-01-27 19:18:07 · 69 阅读 · 0 评论 -
Java 异常
1.异常的定义所谓异常指的就是程序在 运行时 出现错误时通知调用者的一种机制。运行时指的是程序已经编译通过得到 class 文件了, 再由 JVM 执行过程中出现的错误。2.防御式编程错误在代码中是客观存在的. 因此我们要让程序出现问题的时候及时通知程序猿. 我们有两种主要的方式LBYL: Look Before You Leap. 在操作之前就做充分的检查.EAFP: It’s Easier to Ask Forgiveness than Permission. “事后获取原谅比事前获取许可更原创 2021-01-25 20:41:48 · 118 阅读 · 0 评论 -
Java 继承
1.继承的定义继承(inheritance)机制:是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展(extends)(增加功能)产生新的类,称派生类。继承主要解决的问题是:共性的抽取。被继承的类我们称为父类、基类或超(级)类;产生的新类我们称为子(级)类,派生类。1.1语法规则基本语法:class 子类 extends 父类 { }• 使用 extends 继承 父类;• Java 中一个子类 只能 继承 一个 父类;继承后在子类的对原创 2021-01-21 20:22:50 · 114 阅读 · 0 评论 -
Java String类
1.常见的构造String的方式:// 方式一String str = "Hello Bit";// 方式二String str2 = new String("Hello Bit");// 方式三char[] array = {'a', 'b', 'c'};String str3 = new String(array);注意:• String 是引用类型String str1="hello";String str2=str1;的内存布局如下:Q:如果尝试修改str1,st原创 2021-01-21 19:42:20 · 357 阅读 · 2 评论 -
Java类和对象
一、类类主要是用来对一个实体(对象)来进行描述的,主要描述该实体(对象)具有哪些属性(外观尺寸等),哪些功能。1.类的定义格式:// 创建类class ClassName{field;//成员属性method;//成员方法}class : 为定义类的关键字,ClassName: 为类的名字,{}: 中为类的主体。举例:class Person {public int age;//成员属性public String name;public String sex;publi原创 2021-01-20 22:43:28 · 109 阅读 · 0 评论 -
给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数
题目描述:给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解题思路:第一步:先将数组全部翻转一次第二步:将数组下标为k之前的数组翻转一次第三步:将数组下标为k之后的数组翻转一次class Solution { public void rotate(int[] nums, int k) { k=k%nums.length; reverse(num原创 2021-01-18 20:34:04 · 1341 阅读 · 1 评论 -
冒泡排序(java实现)
算法描述:比较相邻的元素,如果第一个比第二个大,就把它们进行交换,每趟把最大的数排到最后,如此比较,直到排序完成。public static void main(String[] args) { int[] arr={2,5,8,9,12,34,6,7,3}; bubblesort(arr); System.out.println(Arrays.toString(arr));}public static void bubblesort(int[] arr){ for(原创 2021-01-17 21:32:10 · 138 阅读 · 2 评论 -
打印X图形
题目描述:多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。解题思路:X形图案可以拆分成两根斜线,其中ij时输出星号,或者in-i-1时输出星号即可,其他情况都输出为空格import java.util.Scanner;public class Main{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); while(sc原创 2020-12-17 22:18:02 · 551 阅读 · 1 评论 -
猜数字游戏 Java
本题首先我们需要创建一个1-100 的随机数;由于nextInt(int bound)的值域是[0,100)。所以需要再加1.然后再创建while循环 一直与生成的随机数进行比较,直到猜对了,利用break跳出循环即可。import java.util.Random;import java.util.Scanner;public class Test2 { public static void main(String[] args) { Random random =原创 2020-12-16 22:54:12 · 266 阅读 · 0 评论 -
CSDN 改变字体颜色
最近发现了一个新的 改变字体的办法只需要在需要改变颜色的字前面加上color设置颜色,size可以改变字体的大小! 设置颜色 设置颜色 设置颜色 设置颜色原创 2020-12-16 22:45:50 · 138 阅读 · 0 评论 -
Java基础知识(变量、数据类型、运算符)
一、变量的定义和使用变量的定义: 定义出一个符号,这个符号在某个范围内,就代表一个变化的值。变量的赋值:为了一个符号,赋予一个明确的值int w; //定义变量ww=5; //给w赋值,当前值为5变量的定义+初始化:int w=7; //定义w且值为7变量的使用:int w = 7;int h = 2;System.out.println(w * h); // 使用 w、h 这两个变量。打印 14总结:变量必须先定义,才能被使用。变量如果先被赋值或者初始化,才能被原创 2020-12-07 19:45:06 · 356 阅读 · 0 评论 -
设置IDEA背景图
想要心情愉悦的敲代码肯定先要换一个自己喜欢的背景图啦~首先第一步 Ctrl+Shift+A 调出命令框:在当中输入set,选择 setbackground Image进入面板之后,第一步选择你的图片路径,插入图片,之后调整透明度,图片其他设置等等,在下面就可以预览到效果!最后点击OK就可以啦!!...原创 2020-12-06 17:58:45 · 177 阅读 · 0 评论 -
判断三角形的形状
题目要求:已经给出的三条边a,b,c能否构成三角形,如果能构成三角形,判断三角形的类型(等边三角形、等腰三角形或普通三角形)。解题思路:判断是三角形的条件是:任意两边之和都大于第三边,如果不满足则不是三角形。在这个条件当中在判断,等边,等腰,普通三角形。具体实现代码:#include<stdio.h>int main(){ int a,b,c;while(scanf("%d %d %d",&a,&b,&c)>0){ if(a+b&g原创 2020-11-29 17:41:17 · 2336 阅读 · 0 评论 -
合并两个有序的数组
题目要求:给出两个有序的整数数组 A和B ,请将数组 B合并到数组A 中,变成一个有序的数组注意:可以假设A 数组有足够的空间存放B 数组的元素,A 和 B中初始的元素数目分别为 m和n解题思路:我们首先要判断当A数组当中没有元素的情况,即m=0;要求合并后的数组有序,要先进行排序,将A、B中的元素进行比较,放入m+n-1 的A数组中;最后还应该判断一种情况就是,当A中的元素以及合并完了,而B中还有剩余的元素。具体实现程序如下:void merge(int* A, int ALen, in原创 2020-11-26 19:26:06 · 275 阅读 · 0 评论 -
整形序列去重
题目要求:输入n个整数的序列,要求对这个序列进行去重操作。所谓去重,是指对这个序列中每个重复出现的整数,只保留该数第一次出现的位置,删除其余位置。输入描述:输入包含两行,第一行包含一个正整数n(1 ≤ n ≤ 1000),表示第二行序列中数字的个数;第二行包含n个整数(范围1~5000),用空格分隔。输出描述:输出为一行,按照输入的顺序输出去重之后的数字,用空格分隔。例如:输入510 12 15 12 75输出10 12 15 75解题思路:利用两个for循环一一比较,如果相同就跳过原创 2020-11-25 17:52:36 · 213 阅读 · 0 评论 -
C语言中的文件操作
我们首先了解一下文件的基本内容:什么是文件磁盘上的文件是文件。但在程序设计中,我们一般涉及到两个文件:程序文件、数据文件。程序文件:包括源程序文件(后缀为.c)、目标文件(windows环境后缀为.obj)、可执行程序(windows环境后缀为 .exe)数据文件:文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行时需要从中读取数据的文件,或者输出内容的文件。文件类型根据数据的组织形式,数据文件被称为文本文件或者二进制文件。二进制文件:数据在内存中以二进制的形式存储,如果原创 2020-11-23 20:36:46 · 105 阅读 · 0 评论 -
数组的越界访问
#include<stdio.h>int main(){int arr[]={1,2,3,4,5,6,7,8,9,10};int i=0;for(i=0;i<=12;i++){printf("哈哈\n");}return 0;}我们知道,内存中栈区的使用习惯是先使用高地址空间,再使用低地址空间;而且数组随着下标的增长,地址也是由高到低变化的。程序中先创建了i;再创建了arr数组,数组越界访问是有可能访问到 i,改变了 i 的值,导致了这段程序死循环。arr[1原创 2020-10-11 21:22:19 · 1033 阅读 · 0 评论 -
三子棋游戏
三子棋游戏思路分析①初始化棋盘initboard首先棋盘是一个3*3的棋盘,我们可以利用二维数组board[3][3]来表示;函数初始化棋盘,使棋盘为空;函数打印棋盘 displayboard②游戏环节 game()编写两个函数玩家落子 playermove;电脑落子 computermove;③判断输赢 checkwin()分为三种情况:玩家赢;电脑赢;平局;以下为具体程序:头文件+函数声明game.h#define _CRT_SECURE_NO_WARNINGS 1原创 2020-09-10 20:32:45 · 134 阅读 · 0 评论 -
c语言 猜数字游戏(两位)
#define _CRT_SECURE_NO_WARNINGS1#include<stdio.h>#include<stdlib.h>#include<time.h>void meun(){ printf("*******************\n"); printf("**** 1.play ****\n"); printf("**** 0.exit ****\n"); printf("*******************\n");}vo原创 2020-08-21 19:54:59 · 472 阅读 · 0 评论 -
c语言 利用函数求两个整数之间的最大值
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>int max(int x, int y){ int z; z = (x > y) ? x : y; return z;}int main(){ int a=0; int b=0; int c=0; printf("请输入两个整数:"); scanf("%d%d", &a, &b); c = max(a, b); printf("%d", c)原创 2020-08-10 10:58:18 · 3044 阅读 · 0 评论