自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

原创 Java使用线程实现数组排序

2022-04-12 17:03:27 533 1

原创 【LeetCode No.136】Java 只出现一次的数字

题目描述题目要求的是,线性时间复杂度和常数空间复杂度要考虑使用位运算。异或运算:public class CountOne { public static int singleNumber(int[] nums) { int single = 0; for (int num : nums){ single ^= num; } return single; } public static

2022-04-12 16:57:17 772

原创 【LeetCode No.121】Java 买卖股票的最佳时机

题目描述第一眼看到这道题,就想到了暴力破解,但是看这个范围,1 <= prices.length <= 10^5 ,两层 for 肯定超时int profit = 0; for (int buy = 0; buy < prices.length; buy++){ for (int sale = buy+1; sale < prices.length; sale++){ if (prices[buy] &lt

2022-04-11 11:42:16 1026

原创 【LeetCode No.108】Java 将有序数组转换为二叉搜索树

题目描述二叉搜索树形状还得是高度平衡的二叉搜索树,也就是说每个结点的左子树和右子树高度差<=1对于一个升序的数组,选择它的中间元素作为根节点即可保证是一个平衡的树创建这棵树的过程就是递归找根结点的过程package leetCode;public class ToBST { public static TreeNode sortedArrayToBST(int[] nums) { return searchRoot(nums, 0, nums.length-1

2022-04-10 21:29:43 997

原创 【LeetCode No.88】Java 合并两个有序数组

题目描述当时想的很简单 就把num2 复制到 num1 的后面,再对 num1 排序 for (int i = 0; i < n; i++){ nums1[m+i] = nums2[i]; } Arrays.sort(nums1);sort 的实现其实是快排,时间复杂度是 O((m+n)log(m+n))虽然通过了,但结果不尽人意再来看第二种方法,这种就是先使用 num1 后面空的位置,比较两个数组的元素大小,再放进 num1 的空位,这样得到的新的num1 是有序的

2022-04-09 21:51:25 747

原创 【LeetCode No.66】 Java 加一

题目描述刚开始读题没读明白,原来数组里边每个数只能是 0-9 之间,没认真读题import java.util.Arrays;public class PlusOne { public static int[] plusOne(int[] digits) { for (int i = digits.length - 1; i >= 0; i--){ if (digits[i] < 9){ ++digits[

2022-04-08 15:34:57 522

原创 【LeetCode No.53】 Java 最大子数组和

题目描述看的别人的题解找的思路【flag : 贪心和动态规划】public class MaxSum { /* 在整数数组中,找一个具有最大和的连续子数组,返回这个和 */ public static int maxSubArray(int[] nums) { int ans = nums[0]; int sum = 0; for (int x : nums){ if (sum <= 0)

2022-04-07 18:16:10 439

原创 【LeetCode No.35】Java 搜索插入位置

题目描述题目要求 O(log n) 的复杂度,第一反应就是 二分查找 这没问题这道题和普通的二分查找感觉没有区别public class SearchTarget { /* nums 是升序数组,从里边找 target 如果在 nums 里,返回索引 如果不在,返回按顺序插入的位置 必须使用 O(log n) 的算法,二分查找呗? */ public static int searchInsert(int[] nums, int target

2022-04-06 16:17:55 251

原创 【LeetCode No.27】Java 移除元素

题目描述这道题的要求和26题很像,所以第一反应就是采用双指针的写法思路是没问题的,就是在写的时候有些语句冗余public class DeleteEquals { public static int removeElement(int[] nums, int val) {// if (nums.length == 0){// return 0;// }// if (nums.length == 1 &&

2022-04-05 16:17:26 279 1

原创 【LeetCode No.26】Java 删除有序数组中的重复项

题目描述官方视频已经讲的很清楚了不使用额外的空间,原地修改数组给的是已经排好序的数组,那么相邻两个数如果不相等,那就可以判断下一组相邻的数是否相等了如果相等,就要考虑下一个数和这个数是否还相等临界条件自然是 fast 不能超过数组的长度,返回的不重复的数的个数,因为slow 是从0 开始,所以应该是返回 slow+1public int removeDuplicates(int[] nums) { if (nums.length == 0){ retur

2022-04-04 22:06:44 316

原创 【LeetCode No.1】Java 两数之和

题目:两数之和想当然的,法一:暴力破解public static int[] getIndexs(int[] arr, int target){ int[] indexs = new int[2]; for (int i = 0; i < arr.length-1; i++){ //因为是两个数相加,第一次循环没必要循环到最后一个数,到倒数第二个就行了,所以是 length-1 for (int j = i+1; j <

2022-04-04 12:20:53 108

原创 Git学习

第一部分:看那个游戏记的笔记提交: git commit分支只是简单的指向某个提交记录创建一个新分支: git branch + 新分支的名字切换到新分支:git checkout <name>创建新分支并切换到新分支:git checkout -b <your branch name>把分支合并到main 分支:git merge <branch name>把main 分支合并到新分支:git checkout <branch name>; g

2022-04-02 10:37:01 269

原创 类方法和成员方法

静态方法用static修饰 是类方法 类方法既可以用类名调用 也可以用对象调用非静态方法没有static 属于对象的成员方法,必须新建对象通过对象来调用正因为类方法可以通过类名调用 无需创建对象所以类方法中只能调用类方法也就是静态方法,否则用类方法调用成员方法,这个成员方法的对象还没有创建,也就是this指向null,编译失败的!!!“静态方法只能访问静态成员(包括静态属性 静态方法)普通方法 既可以用类名调用类方法 也可以创建对象调用类方法 也可以调用普通方法”【只需要记住静态方法只可以访

2022-02-13 12:15:58 987

原创 java.lang.IllegalArgumentException: Test class can only have one constructor

测试方法写在了要用的类里import org.junit.Test;public class Student { private String name; private int age; public Student() { } public Student(String name, int age) { this.name = name; this.age = age; } public String

2022-02-12 22:10:03 906

原创 python 实现 1~100 所有质数求和

# 用for循环实现1~100中的质数求和sum = 0for x in range(2, 101): for i in range(2, x): if x % i == 0: break else: print('%d 是个素数' % x) sum += xprint(' 1 ~ 100 所有素数的和为:', sum)...

2021-10-23 17:21:36 9587 1

原创 什么时候用指针?

当你传递一个参数给函数的时候,这个参数会不会在函数内被改动,决定了使用什么参数形式。如果需要被改动,则需要传递指向这个参数的指针。如果不用被改动,可以直接传递这个参数。——摘抄自程杰前辈的《大话数据结构》【很棒的一段话,受益匪浅。】...

2021-07-27 10:22:08 226 3

转载 Node.js安装详细教程【含常见问题】

装的时候,参考了前辈的node.js 安装详细步骤教程补一些我自己遇到的问题: 问题一按前辈的方法装了之后,在自己新建的文件夹 node_global 下并没有显示安装了通过 npm 命令下载的 webpack,还是显示安装到了C盘C:\Users\Chy13\AppData\Roaming\npm 里,我的安装目录是D:\Nodejs【解决】是因为我的安装目录的文件夹名称的问题,我当时写的是Node.js,问题就出在这个 “ . ” 上面,配置环境变量的时候,应该是不能识别这个 “ . ” 。

2021-07-21 10:46:11 307 2

原创 【回顾】Java中字符串的比较

“==”两个字符串,s1==s2比较的s1、s2是否指向同一个对象,也就是比较的内存地址“equals”s1.equals(s2)比较的是两个字符串里的内容“compareTo”s1.compareTo(s2)两个字符串,从自己的第一个字符开始比较,找到不一样的字符时,返回的是这两个不一样的字符的ASCII码的差值(s1-s2)如果,两个字符串的长度不一样时,返回的是字符个数之差...

2021-07-09 19:30:51 165

原创 使用Hibernate框架之前需要注意的点

实体类①属性私有②set&get③唯一的id值(唯一标识这个实体类对象,对应数据表中的主键)④属性使用基本数据类型的包装类来修饰(原因:包装类可以值为null)【例:你考试得了0分,0有两种含义,一是你真的得了零分;二是你没参加考试,所以为了避免歧义,使用包装类】【补:int–>Integer、char–>Character、double–>Double…】HIbernate主键生成策略之前在Hibernate环境搭建那篇文章中的client.hbm.xml..

2021-07-07 11:30:44 71

原创 【入门级】Hibernate环境搭建

【idea2020.1.1】hibernate是应用在DAO层的框架,之前用的beanutils功能类似【区分–>JavaEE的三层架构和MVC思想:JavaEE三层结构:web层、service层、dao层;MVC思想 m:模型,v:视图,c:控制器】找到jar包jar包获取:http://hibernate.org/orm/releases/我用的是hibernate5.2【链接:https://pan.baidu.com/s/1-OzVeT-6JDIYMy2ab3alXg提

2021-07-02 11:59:03 191

原创 idea2020.1新建xml文件

idea中new里找不到xml格式的文件,需要自己手动创建。File–>Settings–>

2021-07-02 09:54:52 503

原创 【个人记录】idea2020.1.1创建Javaweb模块

【版本不一样的话,New Project页面没有Java Enterprise选项卡,记着2020.2没有】【附idea2020安装包:链接:https://pan.baidu.com/s/1zTiwcTTSQDDEd6wLUuDfIg提取码:y2t9】记录一下,长时间不做就忘记了File–>New Project–>Empty ProjectFile–>New–> Module–>Java Enterprise–>Web Application两处红框

2021-07-01 10:22:26 325

原创 Android Studio使用真机调试,vivo和华为两种操作步骤

vivo(忘记要不要点击版本号开启开发者模式了,,)开启开发者人员选项和USB调试步骤:设置–》更多设置–》开发者选项华为设置–》关于手机–》连续点击七次版本号即可打开开发者模式–》返回设置–》系统和更新–》开发人员选项–》见下图...

2021-03-24 15:26:59 1037

原创 Android Studio运行时提示Gradle build failed with 1 error(s)且提示“你的主机中的软件中止了一个已建立的连接。”

就离谱,,很正常的在运行项目,之前运行成功,这次提示Gradle build failed 。还说,你的主机中的软件中止了一个已建立的连接。查了查才知道,,,是因为我用电脑开了热点,,关了热点就好了...

2021-03-23 18:03:51 5767

原创 Eclipse向main(String[ ] args)传递参数

最近在练习异常这一块,有个例子需要向main函数传递参数,用的是eclipse选中你的main方法所在的类,右键,移到Run As,选中Run Configurations…选择Arguments,在Program arguments:输入自己要传递给main的参数即可,点击run即可运行...

2021-03-09 20:02:43 198

原创 指针实现二维数组行列互换

//二维数组转置#include<stdio.h>int main(){ void exchange(int *p); int a[3][3],i,j; int *p; //二维数组的输入 printf("请输入二维数组:"); for(i=0;i<3;i++){ for(j=0;j<3;j++){ scanf("%d",&a[i][j]); } } p=&a[0][0];//指向第一行 //行列互换 exchange(p);

2021-02-20 11:03:37 3129 8

原创 指针与函数

【指向函数的指针】定义: 数据类型 (*指针变量名)(函数参数表列);如果要用指针调用函数的话,必须先使指针变量指向该函数eg:int *p(int a1 ,int a2);p=max;c=(*p)(a,b);【函数的返回值是指针型,即地址】返回指针值的函数定义形式:类型名 *函数名(参数表列);eg:int *a(int x,int y){}a是函数名,这个函数名前有个“*”,表示此函数是指针型函数(函数返回值是指针)。最前边的int表示返回的指针是指向整型变量的

2021-02-20 09:44:08 67

原创 指针与数组之间的难舍难分

数组名数组名不代表整个数组中的全部数据,只能表示为数组中首元素的地址,就是一个指针常量。因为数组属于顺序表,逻辑上相邻的元素物理上也相邻。(实参数组名表示该数组首元素的地址,而形参数组是用来接受实参传递过来的地址的)用指针引用数组元素如果指针 p 指向数组 a 的首元素,数组中序号为 i 的元素可以 *(p+i)这样表示,或者 *(a+i)也可如果指针 p 已经指向了数组中的一个元素,那么 p+1表示同一个数组的下一个元素,但是要理解的是,这里的 +1并不只是单纯的+1,而是一个.

2021-02-19 17:54:24 131

原创 指针实现选择排序

先看一下不用指针的写法(函数参数为数组名) void select_sort(int a[],int n){ int i,max,temp; for(i=0;i<n-1;i++){ max=i; for(j=i+1;j<n;j++){ if(a[max]<a[j]) max=j; } //交换 if(max!=i){//max值变了之后才交换 temp=a[i]; a[i]=a[max]; a[max]=temp;

2021-02-08 15:02:17 8895 2

原创 简单理解指针

直接把指针理解成地址,没有任何问题。指针变量的意思就是存放地址的变量。int *point_1,*point_2//表示定义了两个指针变量,他们指向的变量是int型的//此处的“ * ”只表示point_1这个变量是指针变量,point_1是指针变量名printf("%d",*point_1);//输出指针变量point_1所指向的整型变量的值//此处的“ * ”表示“指向的对象”,此处的“ *point_1 ”表示point_1所指向的变量赋值时:point_1=&a;//po

2021-01-31 17:36:43 94

原创 【图解】指针实现两个整数降序输出(企图改变指针形参的值来改变指针实参的值)

用指针变量作为函数参数的方式:主函数int main(){ void swap1(int *p1,int *p2); void swap2(int *p1,int *p2); int *point_1,*point_2,a,b; printf("请输入a、b:"); scanf("%d,%d",&a,&b); point_1=&a;point_2=&b; if(a<b){ swap2(point_1,point_2); } printf("a=

2021-01-31 17:01:39 1011

原创 递归实现整数转字符串

相当于依次输出该数的各个位置上的数void convert(int n){ int i; if(n<0){//对负数,先输出负号,再做为正数处理 putchar('-'); putchar(' '); n=-n; } if((i=n/10)!=0){ convert(i); } //想想为什么写%10,而不直接写n? //执行完最深层的递归后,往回走,从这个出口出来继续执行下面的语句 //如果不带%10,eg:输入436,结果会是4 43 436 printf("%

2021-01-29 17:40:35 420 1

原创 经典递归:汉诺塔问题

有三个柱子,三个盘子都在第一个柱子上,现在要移到第三个柱子上,要求移动过程中盘子相对位置不变,小的还是在上,大的在下。思路:分两步:1.将n-1个盘从一个柱子移到另一个柱子(借助另外一个柱子)(n>1);2.将1个盘子从一个柱子移到另一个柱子//用3个柱子移动n-1个盘子,目的:把所有盘子从x移到z void hanoi(int n,char x,char y,char z){ void move(char a,char b); if(n==1){ move(x,z);

2021-01-29 17:36:56 271

原创 VC++6.0奇奇怪怪的地方——变量明明定义了,却提示未定义?

printf在变量前,报错提示变量未定义? printf("请输入年月日:(年,月,日)"); int year,month,day; int flag,days=0; scanf("%d,%d,%d",&year,&month,&day);修改printf位置int year,month,day; int flag,days=0; printf("请输入年月日:(年,月,日)"); scanf("%d,%d,%d",&year,&month,&

2021-01-29 17:14:36 1504 1

原创 递推和递归的区别:以在4个整数中找出最大的数为例

递归有两个阶段:回溯和递推。回溯:要求的这个东西可以一步一步的转成更小的部分,相当于分解;递推:已知这个问题的组成中的一小部分,向上推,相当于回溯的逆过程。以在4个整数中找出最大的数为例递推://递推找出4个中最大的int max_4(int x,int y,int z,int w){ int max_2(int a,int b); int m; m=max_2(x,y);//此时m为x,y中最大的 m=max_2(m,z);//此时m为x,y,z中最大的 m=max_2(m,w);/

2021-01-29 11:31:45 396

原创 判断一个数是否为素数(质数)

合数n分成两个数相乘,一个会<=n/2,一个>=n/2int sushu(int n){ int flag=1,i; for(i=2;i<=n/2&&flag==1;i++){ if(n%i==0) flag=0; } return flag;}运行结果:若n不能被2到根号n之间的任一整数整除,则n必为素数void sushu(int m){ int i; double k; k=sqrt((double) m); for(i=2;i

2021-01-25 15:30:10 157

原创 VC6.0 建立项目

类似Java中一个包里有好几个.java文件,但只有一个主函数。在VC中要如何实现呢?建立项目。建立工作区不自己建立的话,系统自动建立默认的工作区,其创立的工作区文件名称为你自己创建的项目的名称,文件后缀为.dsw(新建—>>工作区)建立工作区后:建立工程(右键)或者直接新建选择工程选择Win32 Console Application(即创建一个控制台程序)“确定”---->>“完成”(按自己需要)结果为:新建—>>文件—>>C

2021-01-24 15:49:30 654

原创 排序与查找

冒泡排序(咕噜咕噜)思想:从头开始,两个数两两比较并交换(不一定都交换)这叫做一趟循环。n个数排序,就要n-1趟循环,每趟循环后,就确定一个数的最终位置(若是升序排列,第一趟就把最大的那个数放在了最后一个位置)第一趟循环,需要比较n-1次(拿第1个数和后面n-1个数比较,就是n-1次)第 j 趟循环,就是已经确定了 j-1 个元素的位置,所以剩了n-(j-1)个需要比较的元素所以第 j 趟需要比较 (n-(j-1)-1)=n-j 次例:对10个数升序排列(冒泡) #include<s.

2021-01-18 20:21:14 101 1

原创 链接时的两种错误:LINK : fatal error LNK1168和1104: cannot open Debug/xx.exe for writing或file “Debug/xx.exe“

**环境:**VC**错误发生的情况:**调试结束想要再次调试时原因:解决方法:看了很多说是强制关闭.exe文件的,我关不掉…之前我就直接把VC给关了,一次一次的很麻烦简单的方法:用管理员身份打开VC即可...

2021-01-12 10:36:27 433

原创 关于c语言中int main()返回值为0的问题

没加return 0;程序还是正常运行?我是在Visual C++6.0的环境下运行的程序,没加return 0;程序正常运行。原因:在Visual C++6.0编译环境下,如果没有加return 0;系统默认加上,但是其他编译环境不确定。(Visual Studio是可以的)返回值写什么整数都可以吗?我还真是这么以为的。但我以为真的是我以为。一位对待问题很严谨的朋友关于这个问题给我甩来了几张截图:代码正确,不加return 0;的情况 代码正确,返回值为任意值代码错误&&am

2021-01-09 22:50:14 2826 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除