自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

程序员小祝的博客

渴望变得更强

  • 博客(23)
  • 资源 (9)
  • 收藏
  • 关注

原创 JAVA面试题最新大全(二)

11. 抽象类必须要有抽象方法吗?不需要,抽象类不一定非要有抽象方法。 如下:abstract class Cat { public static void sayHi() { System.out.println("hi~"); }}上面代码,抽象类并没有抽象方法但完全可以正常运行。12. 普通类和抽象类有哪些区别?·普通类不能包含抽象方法,抽象类可以包含抽象方法。·抽象类不能直接实例化,普通类可以直接实例化。13. 抽象类能使用 final

2021-01-31 22:53:35 68

原创 算法之求x的平方根

题目:实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。解析:这题的解法用暴力解法是非常简单的。主要的麻烦在于如何解的更好,答案就是用牛顿迭代法。下面这种方法可以很有效地求出根号 a的近似值:首先随便猜一个近似值 x,然后不断令 x 等于 x 和 a/x的平均数,迭代个六七次后 x 的值就已经相当精确了。例如,我想求根号 2 等于多少。假如我猜测的结果为 4,虽然错的离谱,但你可以看到使用牛

2021-01-31 00:15:59 1234

原创 算法之二进制求和

题目:给你两个二进制字符串,返回它们的和(用二进制表示)。输入为 非空 字符串且只包含数字 1 和 0。解析:我们可以借鉴「列竖式」的方法,末尾对齐,逐位相加。在十进制的计算中「逢十进一」,二进制中我们需要「逢二进一」。具体的,我们可以取 n = max{ a.length, b.length },循环 n次,从最低位开始遍历。我们使用一个变量carry表示上一个位置的进位,初始值为 0。记当前位置对其的两个位为 ai和 bi ,则每一位的答案为 (carry+ ai + bi) %2,下一位的

2021-01-30 20:05:14 848

原创 算法之加一

题目:给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。解析:根据题意,加一 有可能的情况就只有两种:1.除9之外的数字加一;2.数字9。然后还有一些特殊情况就是当出现 99、999 之类的数字时,循环到最后也需要进位,出现这种情况时需要手动将它进一位。 public int[] plusOne(int[] digits) { int

2021-01-30 16:57:38 304

原创 算法之最后一个单词的长度

题目:给定一个仅包含大小写字母和空格 ’ ’ 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。如果不存在最后一个单词,请返回 0 。说明:一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串解析:先去掉字符串两边的空格,再从后往前遍历,遍历到空格就停止遍历,返回单词长度。 public int lengthOfLastWord(String s) { s=s.trim(); int len=s.lengt

2021-01-30 14:14:53 65

原创 算法之最大子序和

题目:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。解析:采用动态规划的思想。详细看注释。public int maxSubArray(int[] nums) { int n = nums.length; if(n == 0) return 0; //定义dp数组,dp数组中的每个值dp[i]代表着以nums[i]为结尾的最大子序和 int[] dp = new int[n]; //以nums[0]结尾的

2021-01-30 00:25:27 142

原创 算法之外观数列

题目:给定一个正整数 n ,输出外观数列的第 n 项。「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。你可以将其视作是由递归公式定义的数字字符串序列:前五项如下:111211211111221第一项是数字 1描述前一项,这个数是 1 即 “ 一 个 1 ”,记作 “11”描述前一项,这个数是 11 即 “ 二 个 1 ” ,记作 “21”描述前一项,这个数是 21 即 “ 一 个 2 + 一 个 1 ” ,记作 “1211”描述前一项,这个数是 1

2021-01-30 00:03:20 131

原创 算法之搜索插入位置

题目:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。解析:很简单哈,看代码就明白了。 public int searchInsert(int[] nums, int target) { if(target<nums[0]){ return 0; } for(int i=0;i<nums.length;i++){

2021-01-29 21:04:27 112

原创 算法之匹配字符串

题目:给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。解析:比较简单,直接字符串对比即可。 public int strStr(String haystack, String needle) { int len_h = haystack.length(); int len_n = needle.length(); for(i

2021-01-29 17:06:59 76

原创 算法之移除元素

题目:给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。解析:当 nums[i] 与给定的值相等时,递增 i 以跳过该元素。只要 nums[i] != val,我们就复制 nums[i] 到 nums[j],并同时递增两个索引。重复这一过程,直到i到达数组的末尾,该数组的新长度为 j. pu

2021-01-29 16:17:30 109

原创 算法之统计排序数组中的非重复项个数

题目:给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。解析:数组完成排序后,我们可以放置两个指针 i 和 j,其中 j是慢指针,而 i 是快指针。只要 nums[i] = nums[j],我们就增加i 以跳过重复项。实际上,不重复元素的新数组是根据指针 j 来记录的。j 记录了有多少个不重复的元素。​ public int removeDupli

2021-01-29 12:59:18 451

原创 算法之合并两个有序链表

题目:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。解析:标签:链表、递归这道题可以使用递归实现,新链表也不需要构造新节点,我们下面列举递归三个要素终止条件:两条链表分别名为 l1 和 l2,当 l1 为空或 l2 为空时结束返回值:每一层调用都返回排序好的链表头本级递归内容:如果 l1 的 val 值更小,则将 l1.next 与排序好的链表头相接,l2 同理 public ListNode mergeTwoLists(ListNode

2021-01-28 21:48:26 198

原创 算法之有效的括号

题目:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。解析:建立一个新的栈,然后遍历字符串的字符,进行比较 public boolean isValid(String s) { Stack<Character>stack = new Stack<Character>(); for(char c: s.to

2021-01-28 20:08:04 146

原创 算法之最长公共前缀

题目:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。解析:一种方法是纵向扫描。纵向扫描时,从前往后遍历所有字符串的每一列,比较相同列上的字符是否相同,如果相同则继续对下一列进行比较,如果不相同则当前列不再属于公共前缀,当前列之前的部分为最长公共前缀。 public String longestCommonPrefix(String[] strs) { if(strs.length==0 || strs == null ){

2021-01-28 17:56:58 109

原创 算法之罗马数字转整数

题目:罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。

2021-01-28 15:19:23 190

原创 算法之回文数

题目:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。简单去思考,就是转换为字符串去判断是否为回文数。 public boolean isPalindrome(int x) { StringBuffer sb1=new StringBuffer(x+""); StringBuffer sb2=new StringBuffer(x+""); sb1.reverse(); if(sb1.t

2021-01-28 11:02:43 496

原创 算法之整数反转

题目:给你一个 32 位的有符号整数 x ,返回 x 中每位上的数字反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。 public int reverse(int x) { StringBuffer sb = new StringBuffer(); int flag=1; if(x>0){ flag=1; }else {

2021-01-27 23:36:49 122

原创 算法之根据两数和求数组中两数的下标

题目:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。 public int[] twoSum(int[] nums, int target) { int[] aim=new int[2]; int sum=nums.length; for(int i=0;i<sum;++i ){ for(int j=i+1;j<sum;++j){

2021-01-27 22:17:39 145

原创 算法之求位1的个数

题目:编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量) public int hammingWeight(int n) { int mask=1; int sum=0; for(int i=0;i<32;++i){ if((n & mask) != 0){ sum++; }

2021-01-27 21:49:37 316

原创 算法之两整数之和

题目:不使用运算符 + 和 - ​​​​​​​,计算两整数 ​​​​​​​a 、b ​​​​​​​之和。既然不能使用运算符,那就联想到使用位运算符: public int getSum(int a, int b) { int sum=a^b; int temp= (a & b) <<1; if(temp!=0){ return getSum(sum,temp); } return sum;

2021-01-27 19:00:36 581

原创 算法之判断存在重复元素

题目:给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。看到题目立刻写答案: public boolean containsDuplicate(int[] nums) { int n=nums.length; for(int i=0;i<n;++i){ for(int j=i+1;j<n;++j){ if(n

2021-01-27 14:14:47 866

原创 算法之求质数

问题:统计所有小于非负整数 n 的质数的数量。一开始直接使用暴力枚举法:public static int countPrimes(int n) { for (int i = 2; i < n; i++) { boolean j = isPrimes(i); if (j) { // 不是质数 count++; } } return count; } public static boolean isPrimes(int n) { for (int i

2021-01-27 12:06:36 138

原创 JAVA面试题最新大全(一)

1. JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。 JRE:Java Runtime Environment 的简称,java 运行环境,为 java 的运行提供了所需环境。 具体来说 JDK 其实包含了 JRE,同时还包含了编译 java 源码的编译器 javac,还包含了很多 java 程序 调试和分析的工具。 简单来说:如果你需要运行 java 程序,只需安装 JRE 就可以了,

2021-01-27 00:00:31 94

心理咨询平台项目.zip

心理咨询与诊断平台项目的开发,使用了所学的HTML、CSS、Javascript、JQuery、AJAX等网页开发技术。

2021-04-27

MavenF.zip

这个项目是一个基于SSM框架技术的小项目,包含Spring、Mybatis、Spring mvc。

2019-07-31

mavenFront.zip

这个项目是一个简单的框架技术结合,有Struts2、Mybatis、Spring等框架。

2019-07-31

Mybatis.zip

这个是简单的Mybatis框架的技术,可以用来参考Mybatis的结构和代码实现。

2019-07-31

Struts2.zip

这个就是一个Struts2框架的demo,要连接数据库的,所以下载后无法运行,但是代码结构是可以看的,完整的。

2019-07-30

struts2框架jar包.zip

这个是struts2框架所需要的jar包,下载到javaWeb项目里面的WebContent\WEB-INF\lib下。

2019-07-30

MusicPlayer.zip

该音乐播放器是用Java swing编写的界面,分为客户端和服务端,用户可以通过登录客户端,进行本地以及在线音乐的播放,管理人员可以通过服务器进行在线音乐的导入和管理。

2019-05-10

Java swing 网盘管理系统

界面是用Java swing编写的,项目开发环境是Windows10,JDK1.8,开发软件eclipse,sqlite数据库,visio,该系统采用C/S结构设计,分为客户端、管理员端、业务服务器端、文件服务器端。用户可以通过客户端进行用户的登录注册,文件的上传下载、删除、重命名、分类查询等。管理员可以对全部用户的文件进行管理、并且可以禁用、解封用户的账号。业务服务器支撑网盘客户与管理员的业务请求。文件服务器支持文件传输业务。

2019-05-09

Java swing 网盘管理系统

界面是用Java swing编写的,项目开发环境是Windows10,JDK1.8,开发软件eclipse,sqlite数据库,visio,该系统采用C/S结构设计,分为客户端、管理员端、业务服务器端、文件服务器端。用户可以通过客户端进行用户的登录注册,文件的上传下载、删除、重命名、分类查询等。管理员可以对全部用户的文件进行管理、并且可以禁用、解封用户的账号。业务服务器支撑网盘客户与管理员的业务请求。文件服务器支持文件传输业务。

2019-05-08

空空如也

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

TA关注的人

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