自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 用Xshell和Xftp连接远程服务器

用Xshell和Xftp连接远程服务器https://www.xshell.com/zh/free-for-home-school/从官网的给学生和家庭的免费下载渠道,输入有效的邮箱地址,它会把下载连接发送到邮箱,下载后安装就行。Xshell新建会话,名称可以改成随便,主机就是目标IP地址,端口号也改成对应的。点击确定保存,连接的时候会询问你的用户名和密码,依次输入并选择保存用户名、保存密码。Xftp同样,新建会话后巴拉巴拉,最后连接成功。Xftp是用来传输文件的软件,可以从自己的电脑上向远程

2022-04-21 09:20:39 424

原创 论文阅读(一) 注意力机制

毕业设计开题报告,研究生学长给了好多论文,先大概看几篇先是3篇关于注意力机制的3D point capsule networksDynamic Graph CNN for Learning on Point CloudsNetVLAD_CNN_Architecture3D point capsule networks看看abstract在本文中,我们提出了一种3d点压缩网络(3D point-capsule network)。这是一种自动编码器(auto-encoder),用于在处理稀疏的

2022-03-06 17:14:01 2647

原创 LeetCode第94题 二叉树的中序遍历

这几天要开始面试了,先来保证做题速度做几题。今天换换口味,看看二叉树的题目。进一步的要求是用迭代算法而不是递归算法。迭代大概就是指用栈实现?java知识java里的栈怎么用来着?...

2022-02-08 16:11:33 200

原创 LeetCode第49题 字母异位词分组

第一反应先写一个函数,用于对比两个词是否为异位词然后每拿到一个新的词,就依次和前面保存的答案数组中的每一个词对比,如果有相同的就放进去,如果没有就单独成组放进去。效率不高,要执行n^2次那个对比词的函数看看题解...

2022-02-05 22:45:18 6142

原创 LeetCode第53题 最大子数组和

可恶,我明明想今天早点睡觉第一反应双指针,虽然不知道要用双指针干什么,但反正是双指针。(后面看了下好像不是双指针)首先起点找一个正数(没有就找一个最大的非正数),然后把所有相邻的正负数加起来,让剩下的变成一个正数一个负数依次排列。也可以排除两侧的负数。然后,对每一个负数,看看它绝对值是不是比两侧的正数都要大,如果是的话就先不管,继续看其他的数;如果不是的话,就把这三个数加起来合并在一起看完一轮再来一轮,重复直到无法减少数字,然后找到其中最大的正数很合理,时间复杂度大概是O(n^2)感觉算是.

2022-01-28 01:15:48 6372 1

原创 LeetCode第46-47题 全排列1-2

第一反应我怎么感觉做过类似的题。和第31题“下一个排列”对比整数数组的 下一个排列 是指其整数的下一个字典序更大的排列。更正式地,如果数组的所有排列根据其字典顺序从小到大排列在一个容器中,那么数组的 下一个排列 就是在这个有序容器中排在它后面的那个排列。如果不存在下一个更大的排列,那么这个数组必须重排为字典序最小的排列(即,其元素按升序排列)。示例 1:输入:nums = [1,2,3]输出:[1,3,2]反复调用这个,其实就能得到每一种排列。不过这样的效率也太低了。如果用类.

2022-01-27 23:42:30 5825

原创 LeetCode第48题 旋转图像

第一反应要原地修改。找到坐标之间的对应关系,尽量不使用额外的存储空间。对于一个m行m列的矩阵,如果m是偶数,可以对0~m/2-1这部分处理,对于(i,j),将(j, m-1-i), (m-1-i , m-1-j) , (m-1-j, i)这四个点,依次顺时针旋转90°。对于m为奇数,对于(m-1)/2这个点单独处理就行提交通过只用了1个辅助空间class Solution { public void rotate(int[][] matrix) { int len = m.

2022-01-26 22:12:54 216

原创 LeetCode第55、45题 跳跃游戏1-2

第一反应注意到,如果一个数字n,它的下一位如果小于等于n-1,那可以认为不存在:因为它能跳到的位置,数字n也能跳到;同理,下i位如果小于等于n-i,也可以认为不存在。这样,只要顺着往下查看,如果看到大于n-i的,就从这里开始继续更新;如果一直到0都没有,那就不能跳过这里。感觉没啥问题提交通过class Solution { public boolean canJump(int[] nums) { if(nums.length == 1){ retur.

2022-01-26 21:56:12 2061

原创 LeetCode第43题和第415题 字符串相乘

第一反应注意到num的长度可能在110位,只是简单转换成整数是没法处理的,必须直接在字符串范围里使用乘法一个想法是模仿列竖式,num2的每一个数依次和num1相乘,得到的结果再累加。这样的话要实现1位乘1位乘法和大数加法。可行,运算速度也还行,最多的情况大概也就两万次运算看看题解果然是这么做的,稍微可以优化的地方是加法可以每一次乘完1位就累加一下。也好办。不过最妙的地方是,这题和第415题是相关的,我可以做第415题的字符串相加来作为今天的第三题,这样就可以偷懒了事实上我是先完成了415题,再.

2022-01-23 19:02:24 1143

原创 LeetCode第39-40题 组合总和一和二

这两题非常相似,只有少量修改,所以放到一起第一反应递归,比如示例1,[2,3,6,7] target=7,我的想法是依次从target中减去一个待选数(比如7-2=5),然后对得到的数字再递归调用本体函数。如果要优化的话,可以考虑对于得到的结果存进数组,以避免反复调用某个target浪费。看看题解当做一个树状图的搜索。每一个选择分支都有选择这个数字、不选这个数字两种,如果不选这个数字就把指针移动到下一个数字看完题解再想是不是,比如说树状图的搜索,如果在比如左侧的第一个分支表示选择2,在右侧的

2022-01-23 16:27:01 336

原创 LeetCode第38题 外观数列

第一反应就这样依次往下递推。而且也没有“用前两项推测下一项”之类的,都是用上一行推测下一行。看看有哪些特性连续的数字,不管有连续的几个(也不一定,如果超过十个数呢?),都会变成两个数字表示(其实不一定,有可能超过连续十个数)不对,是不是根本不可能有连续的超过十个数?如果不考虑前面有连续的超过十个数,最多连着3个数字一样,因为描述一项的两个数字的第二个数字是标识这串“连续数字”是什么,所以相邻的连续数字必定是不同的(否则就被视为同一串连续数字)所以,偶数个数字一定标识连续数字是什么,并且相邻的数字不.

2022-01-23 11:12:48 384

原创 LeetCode第36题 检测有效的数独

第一反应看起来是个模拟类的题目,只能也必须,依次检测九行九列九个格子,好像没什么能优化的。看看题解看看题解确实能优化一点,从遍历三次改成遍历一次:遍历的时候用单独的数组记录下每个方向的信息,并检查提交通过class Solution { public boolean isValidSudoku(char[][] board) { int[][] rows = new int[9][9]; int[][] columns = new int[9][9]; .

2022-01-22 21:55:50 575

原创 LeetCode第33-35题 数组二分查找的变形题目

前言今天的三题不算难,思路是相似的,都是对于有序数组查找的变形,时间复杂度要求都是O(logn),干脆放到一起写题解了要是每天题目都这么简单就好了第一反应还是用二分查找。先记录两头的数字,然后找中间一个数字,看目标在哪个区间。区间里是单调增那就回到有序数组的查找,不是单调增就(类似于)递归调用自己提交通过没啥可说的,分类讨论就行class Solution { public int search(int[] nums, int target) { int left =

2022-01-21 10:54:21 712

原创 LeetCode第31题 下一个排列

第一反应从后往前找,找下一个数字如果不是递增(可以是相等),就停下来(称为第n个),这一段(n到最后一个数这段)然后在这段里面改排列。怎么改呢?第n个改成下一个比n大的数,剩下的从前往后递增排。这个其实有点像九连环的模式。java知识对数组的一部分元素进行排序Arrays.sort(int[] a, int fromIndex, int toIndex)提交通过class Solution { public void nextPermutation(int[] nums) { .

2022-01-20 22:27:23 476

原创 LeetCode第29题 两数相除

第一反应注意边界条件,注意溢出处理。由于不允许用乘法和除法和mod,所以第一个想到的是模仿除法的过程,用依次减法,直到剩下的不够减。考虑到大数字除以小数字的情况,这样很容易超时,应该不是。第二个想到的是用类似于除法列竖式。实现一个部分除法功能,用于计算商为1位数的情况,然后模仿列竖式,求余数,乘以10之后加上下一位作为下一个被除数(递归?)。感觉可行。第三个想法是没有必要拘泥于10进制,如果用2进制的除法就更简单,商只有0和1关于边界条件可能溢出,由于除数和被除数都是整数,商肯定是小于等于除数.

2022-01-20 21:24:16 941

原创 LeetCode第50题 快速幂运算

第一反应没这部分,因为我是从第29题的题解直接跳转过来的。看看题解简单来说就是将得到的结果将自身取平方,快速逼近极大的幂数,这样连指数位都是指数上升的。题解中提到,用递归会消耗更多的空间,而如果先将幂数转化成二进制就可以不用递归从而减少空间消耗,但实际上这两者消耗的空间都是O(logn)。我还是用递归吧提交通过class Solution { public double myPow(double x, int n) { if(n == 0){ r.

2022-01-20 20:23:19 226

原创 LeetCode第28题 实现strStr()

第一反应有限状态机这个字符串匹配算是编译原理里面最经典的内容了,展开能搞好多东西,但是看到“简单”这个难度,我感觉不可能那么复杂最简单的就是一个一个字符对比是不是needle的第一个字符,是就继续,不是就回退到开始匹配的地方,但是这样效率不高,比如haystack是aaaaaaaaaa,needle是aaab。这种最好是只回退1步(可以用有限状态机进行匹配,但是代码实现我不会而且肯定好复杂)看看题解,应该有我没想到的简单方法(动态规划肯定算不上简单方法,看看有没有别的)题解方法一:暴力匹配,所.

2022-01-20 00:03:19 623

原创 LeetCode第27题 移除元素

第一反应这和上一题差不多,用快慢指针解决应该没啥问题提交通过一遍过class Solution { public int removeElement(int[] nums, int val) { int fastIndex = 0; int slowIndex = 0; for(; fastIndex < nums.length ; fastIndex ++){ if(nums[fastIndex] == val.

2022-01-19 22:53:10 318

原创 LeetCode第26题 删除有序数组中的重复项

第一反应这倒是不难加一个参数用于记录当前删除了几个元素,然后将下一个元素直接移动到前n个元素提交通过class Solution { public int removeDuplicates(int[] nums) { int offset = 0; int len = nums.length; for(int i = 0 ; i + offset < len ; i++){ int num = nums[i+of.

2022-01-19 22:34:36 280

原创 LeetCode第24题 两两交换链表中的节点

第一反应先来试试哑节点的技术嗯,首先要分奇偶讨论第偶数个节点到下一个是-1,第奇数个节点小下一个是+3对长度为0,1,2,3的情况分类讨论,然后长度为4以上用3个快慢指针提交通过最后发现不需要四个一组也没法四个一组,两个一组交换就行。奇数偶数也不用分类,挺简单的。对于长度为0和1的单独讨论。另外,头一次发现,提交时的内存消耗居然是随机的。同样的代码提交了三次,一次比一次消耗多,实在是奇了怪了/** * Definition for singly-linked list. * publi.

2022-01-18 18:57:14 149

原创 LeetCode第22题 括号生成

第一反应打 表当然不能这样可以递归吧,应该是三种情况,第n的情况时n-1的每种情况左边加一对括号,或者右边加一对括号,或者被括号包括,但是这样有可能重复,好像不太好。或者换个思路,当成一个二叉树,根节点是一个左括号,两侧分别是左括号和右括号。向递归函数里传入的值为(未配对左括号的数量,当前的字符串)java知识关于java传递对象的引用传递基本数据类型的时候是传递值,传递对象的时候传递的是引用提交通过class Solution { public List<String&g.

2022-01-18 18:16:39 458

原创 LeetCode第20题 有效的括号

第一反应这题面试的时候做过,除了常见的用栈之类的东西,还有个效率很低的歪门邪道但是很有意思方法,可以少用几行写出来。java知识没啥新的提交通过class Solution { public boolean isValid(String s) { while(true){ String temp = s; s = s.replace("()",""); // System.out.println(s.

2022-01-18 17:49:11 158

原创 LeetCode第19题 删除链表的第倒数第N个结点

第一反应嗯,这段时间的第一道链表的题目,说实话我连java里有没有指针都搞不清。看了一下代码模板里给的,应该是用class里面的参数作为指向下一个结点的指针的替代。那么,为了一趟遍历就能搞定,首先还是类似于双指针。好在题目已经保证了,n<=链表长度,也就是倒数第n个一定能找到。方法是两个指针,第一个指针先跑n个,然后两个指针一起跑,两个指针之间的距离不变,先跑的指针找到链表的末尾的时候,后跑的指针正好指向倒数第n个。然后删掉链表的一个结点就行。这很合理提交通过/** * Definit.

2022-01-17 23:23:14 61

原创 LeetCode第18题 四数之和

第一反应和之前的三数之和一样,最里面是一个双指针用来找答案,外面是两层循环遍历另外两个数思路很明确,但是我要看一下题解,看看有没有时间复杂度更小(现在是O(n^3))的方法看了一眼题解,最小也就是O(n^3)再剪枝一些。那就开始写吧java知识我遇到了问题ArrayList<ArrayList<Integer>> cannot be converted to List<List<Integer>>于是跑去查了一下我们可以传入 Box&lt.

2022-01-17 21:05:35 57

原创 LeetCode第17题 电话号码和数字的组合

看起来还好啊,为什么会是中等题第一反应看起来只要用循环,检验输入了哪几个数字,找出对应的字母然后依次组合就行。但是问题就在“依次组合”,由于不知道要循环几层(虽然题目说了最多四层,可以穷举,但是穷举了写感觉好傻),具体该怎么写呢?刚刚意识到,这个结构可以看成一个树,根节点空,根节点的子节点是第一个数字对应的字母,以此类推,只要找出所有叶子结点的所有父节点。那这就变成了一个遍历树的问题那具体应该怎么实现呢?总不至于真的搞个链表出来,然后建立树的结构吧?我想到,能不能用数组来管理,毕竟我不需要用树的结.

2022-01-17 11:56:15 631

原创 LeetCode第16题 最接近的三数之和

第一反应和上一题很像,肯定用双指针循环,而且只要有一个输出就行,而且输出的只要是求出来的和就行。预计还是先排序,然后双指针,然后内层循环依次遍历所有。但是好像不行,双指针的移动到底应该怎么移动,想不出来。要找最接近的一个三数之和,应该要遍历有可能的选项。按照我上一个题解改一改的话,应该是两头的指针两层循环,第三个指针用二分查找,找到最接近target的值,然后保存下来,这样的复杂度是O(nnlogn)先写写看复习java获取绝对值Math.abs(数字)提交通过class Soluti.

2022-01-17 00:24:32 223

原创 LeetCode15题 三数之和

第一反应三个循环直接穷举,怎么防止出现重复的三元组,大概可以先把数组排序一下。复杂度小于O(n^3)就算胜利!既然以O(n^3)为目标了,先排个序也没啥问题虽然要求的是三个数之和为0,实际上这里的0没啥特殊的,换成别的数也一样三元组,至少要有一个大于0的,一个小于0的(也可以是三个0),大概能减少一点穷举范围?想了一会儿没想到更好的方法,那我先用现在这个笨办法试一试。数组先排个序,然后在两头各放一个指针,两个指针一起往中间移动(两层循环)。两头的指针指示了两个数字,就可以计算出第三个数字的大小.

2022-01-16 14:59:01 112

原创 LeetCode14题 最长公共前缀

今天开始做力扣,跳过困难题,尽量写题解第一反应,两层循环,一层用于外层循环依次检查第一个字符、第二个字符,直到有字符串没有下一个字符为止;第二层循环依次检查每个字符串,对比他们的第i个字符是不是相同用到一个字符串拆分的功能,复习了一下用的是substring函数,范围是前包后不包python用多了,回到java有点不习惯1.行尾要加分号2.字符串处理不能直接用[:-1]这种,要用substring3.字符串不能直接用[]访问对应位置,要用charAt(),因为string是一个对象4.数组的

2022-01-16 11:54:13 90

原创 12.27 网络编程作业笔记

单线程服务器、多线程服务器、异步服务器,三种架构实现大文件的发送和接收。现在有单线程服务器的echo功能完成,试试看先把文件的读写功能做出来python文件读写生成发送的文件(用来测试文件写入功能)path = './send/file2.txt'write_file = open(path,'w')write_string = ''for i in range(10000): write_string = write_string + str(i) if(i % 10 == 0):

2022-01-01 09:52:37 134

原创 12.6 安卓应用网络功能的初步尝试(七)

为了省事不想做用fragment动态切换中间的textview下次有空了一定改成动态fragment准备改成点击对方卡牌准备猜测时,将己方手牌替换成对应颜色的0-11的牌,点击自己手里的牌进行猜测,同时在中央文本区域、己方手牌区域背景颜色的地方进行说明,这是猜对方牌的部分。但是很丑,好丑啊,没有用动态fragment好看...

2021-12-27 09:12:19 72

原创 12.17 数据库原理作业笔记

存储过程存储过程是像table或者view一样的一个保存在数据库里的对象,编译后保存在数据库里,等待前台调用。CREATE PROCEDURE proc_pr ASBEGIN IF EXISTS(SELECT * FROM sysobjects WHERE TYPE='U' AND NAME='mytable') --判断数据库中是否存在mytable表,类型“U”表示是用户表 BEGIN PRINT '存在要删除的表mytable';

2021-12-27 09:11:52 130

原创 12.8-12.15 数据库原理课堂笔记

安全性连接权-访问权-操作权连接权认证用户是否允许登录到服务器windows认证、SQL Server认证等等访问权认证用于能否访问某个数据库一个登陆账号可以映射到多个数据库里面,作为多个数据库下的登录用户(不过一个用户只能在一个数据库下对应一个用户)...

2021-12-15 12:24:43 721

原创 12.1-12.8 计算机网络课堂笔记

内部网关协议:在自治系统内部选路RIP选路信息协议使用距离向量算法RIP修改本地路由表。路由表有一个应用层的守护进程管理,通告信息使用UDP数据报发送(待补充)OSPF开放最短路径优先周期性的广播链路状态信息,使用IP数据报传输分为本地区域和主干本地区域:只知道本地区域的拓扑,以及到其他区域的最短路径自治系统间选路BGP:从相邻的子网中获取可达信息,向该子网内部的路由器广播这些信息...

2021-12-08 20:55:24 1343

原创 12.6 数据库原理上机实验

其实这个实验应该上个星期做的视图CREATE VIEW Stu_01311_1AS SELECT Student.* FROM Student, Grade WHERE Student.Sno = Grade.Sno AND Grade.Cno = 1 AND Student.Clno = '01311'典型的创建视图CREATE VIEW 视图名称 [列名清单]AS 子查询注意,这里的列名清单大部分时候都是需要的,只有当子查询直接从单个表中导出的时候才可以省略。其他时候都要有

2021-12-06 16:50:07 629 1

原创 11.30 安卓应用网络功能的初步尝试(六)

关于theme和全屏刚刚折腾了很久才搞清楚。比如我想做这个游戏,需要全屏,也不要那个很丑的actionbar,所以需要定义自己的theme <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launche

2021-11-30 19:59:56 1911

原创 11.26 安卓应用网络功能的初步尝试(五)

解决bufferedReader.readline阻塞的问题根本性的解决方法可能是不用bufferedreader,但是我只要做出来结果就行,所以先用一个治标不治本的方法凑活。打算先增加一个echo功能,让服务器返回一条消息,结束当前的readline,然后结束掉readline所在的死循环 /* * 循环接收服务器的消息,并进行处理 */ public void loop_to_recv(){ String TAG = "loop_to_recv";

2021-11-29 18:41:12 2500

原创 11.25 安卓应用网络功能的初步尝试(四)

将socket转换为单例模式public class MySocket extends Socket { private static MySocket mySocket = new MySocket(); //...... // 无法直接用new获取MySocket实例 private MySocket(){ Log.d(TAG, "MySocket: new MySockcet()"); } public static MySocket g

2021-11-26 12:49:53 2017

原创 11.24 安卓应用网络功能的初步尝试(三)

关于JSON发送的信息为JSON字符串,即在客户端用android/java对JSONObject格式的数据结构进行转换,转换成字符串格式,通过socket发送到服务端,再在服务端从字符串转化成python的dict类型。python服务器端def processing(recv_str,address): recv_dict = json.loads(recv_str) send_dict = processing_json(recv_dict,address) send_str = js

2021-11-24 21:48:26 559

原创 11.24 计算机网络课堂笔记

网络层上次课回顾实现端到端的通信IP数据报格式(20字节头部)IP的分片和重组IP地址 CIDRIPV6固定40字节的首部地址为128bits隧道机制,实现IPV4和IPV6的共存,IPV6的报文作为IPV4报文的负载路由算法全局:所有的路由都有全局的拓扑和链路开销信息(链路状态选路算法)分布式:路由仅了解物理相连的邻居和相应的链路开销(距离矢量算法)链路状态选路算法:dijkstra算法距离矢量算法:从x到y最小开销路径的开销:x自身到相邻的邻居的开销,加上邻居到目标的开销

2021-11-24 20:56:02 164

原创 11.24 数据库原理课堂笔记

数据库附加和分离数据库服务正在运行的时候没法复制数据库(被占用了),可以分离(detach)数据库进行复制,然后再附加(attach)。同理,可以用脱机和联机数据库结构是抽象的,不要考虑具体的程序实现只要以最简单的方式把所有需要的数据保存下来。新建视图选择添加一些表会显示被添加的表和表之间的关联查询语句中如果包含WHERE条件,会产生表和表之间的联系完整性和安全性关系数据库 三类完整性约束完整性的定义:正确,有效,一致实体完整性,参照完整性,用户自定义完整性对每个Insert/Upda

2021-11-24 12:25:30 616

空空如也

空空如也

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

TA关注的人

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