栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

今日份学习报告

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

今日份学习报告

早上起的很匆忙,每次都是卡点到班。(早饭:一杯粥)

1.上午的近代史纲要课学了Java基础--听的黑马程序员的课。(学到了hashmap这个地方,前面学习了(泛型类和泛型方法和通配符,还有可变参数和Map的基本操作,获取键值什么的,个人觉得泛型挺有用的,相对来说通配符有点多余了,可变参数中如果有其它参数,则可变参数必须放到最后,试了一下不能有两个可变参数。还有就是Map的遍历,用的是增强for遍历获得键,然后用键通过方法获得值来实现遍历。现在到了Map的遍历方法。之前学的也有些遗忘,学完了再复习吧)

2.上午的Java课学了MySQL数据库(在老师的紧盯下学其他的,还是有点担惊受怕,把昨天学的DDL复习了一遍,又学习了DML和DQL,DQL学到了分组查询,DML主要是对表的操作,有insert、update、delete。即增改删;DQL是查询语言,基础查询:就是普通的字段什么的查,select语句,from语句;在条件查询里增加了where,在聚合函数,主要是是对表的某一列来操作,有sum、max、min、count、avg(平均值),分组里有group by,如果用了where判断过,那么后面的判断用having。)

3.下午的高数课学了MySQL数据库(学的内容就是上面那些)还把大致的上午Java学习的写了一遍代码和Javascript。(js因为之前看过,就相当于跳着看,只看案例,做一遍案例,跟着过,现在到了循环那里,由于之前学过c语言,所以学起来其他语言就有共性,比较容易学。)

4.晚上吃饭去,吃完饭有晚课;通识课啦,又要水一水,这个老师提问哎。吃过饭来到教室,准备刷leetcode。

5.上通识课的时候,没有带电脑,就在我的madpad11上刷了两道中等难度的题,花了我两节课的时间,发现自己的算法基础真的很菜,一道题是反转整数且范围限制在int类型,这道题我刚开始用了数组把他一个个除十取余来做,放进数组,在从头取出来转换为一个整数,比较Integer的最大最小值,看了答案发现数组是多余的,当我取出来的时候直接在给另一个变量直接拼成整数比较就好

题目1:

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ,就返回 0。

假设环境不允许存储 64 位整数(有符号或无符号)。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-integer
 

第一遍代码:

class Solution {
    public int reverse(int x) {
//建数组
        ArrayList list=new ArrayList();
        if(x==Integer.MIN_VALUE) return 0;
        int m=1;
//转换成正整数
       	if(x<0){m=-1;x=-x;}
//除十取余放到数组里
       	while(x!=0){
       	    int cur=x%10;
       	    x=x/10;
       	    list.add(cur);
       	}
       	double d=0;
       	
       	int len=list.size(),i=0;
//遍历数组取出余数
       	while(iInteger.MAX_VALUE||d 

第二遍:

class Solution {
    public int reverse(int x) {
        if(x==Integer.MIN_VALUE) return 0;
        int m=1;
        double d=0;
       	if(x<0){m=-1;x=-x;}
//在这里直接转换了,根本用不到数组
       	while(x!=0){
       	    int cur=x%10;
       	    x=x/10;
       	    d=d*10+cur;
       	}
       	d=d*m;
       	if(d>Integer.MAX_VALUE||d 

看了答案解析后:(用数学方法解决)

class Solution {
    public int reverse(int x) {

        int rev=0;

       	while(x!=0){
//注意这个判断,是整个算法的关键
       	    if(revInteger.MAX_VALUE/10) return 0;

       	    int cur=x%10;

       	    x=x/10;

       	    rev=rev*10+cur;
       	}
       	return rev;
    }
}

第二道题更是难到我了:这道题我开始想到了排序,但感觉没办法做,就放弃了,又用了贪心算法,但是还没做对,于是就想到用Java暴力解法,但是没做完感觉会超时,就直接看答案了:

答案是排序加双指针,而且还有优化:

具体题目:

给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。

返回这三个数的和。

假定每组输入只存在恰好一个解。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/3sum-closest
 

//贪心算法啦
class Solution {
    public int threeSumClosest(int[] nums, int target) {
//排序
	Arrays.sort(nums);
//用大值定义了一个变量
	int best=100000;
//开始遍历:先定住i,从零开始
	for(int i=0;i0&&nums[i]==nums[i-1]) continue;
	    int j=i+1,k=nums.length-1;
//确定i后,剩余两个可以是i后面的任意两个数的组成,因为排完序了,所以后面当sum大于target就后指针前移,sum就会变小啊。
	    while(jtarget){
	            int k0=k;
	            while(k0>j&&nums[k0]==nums[k]){
	                k0--;
	            }
	            k=k0;
	        }
	        else {
	            int j0=j;
	            while(j0 

最后一节课跟同学打麻将,到寝室的路上买了点水果,到寝室就开始振了,一直打到十一点半,女朋友的电话也没接,完蛋了!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/759105.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号