- 博客(64)
- 收藏
- 关注
原创 OUC图书馆—Gamma迭代—测试报告
项目迭代已经接近尾声了,我们也达到了预定的所有功能,同时也完成了附加功能,并具有很好的容错性。我们也终于可以称它为:”OUC图书馆“啦!,希望有机会能够上线~下面是我们的测试报告:具体的功能测试、容错性测试:1.登录帐号错误:ok 提示:用户名错误密码错误:ok 提示:密码错误考虑改进:加入几次错误后冻结 防止穷举攻击账号密码正确多次测试:ok账号含有空格:ok 提示可改进的地方: 登陆界面输入框识别区域布局可能随着手机型号会改变,不适应大屏幕机...
2021-12-28 22:47:00 462
原创 图书馆小程序——Gamma迭代——第十三周会议记录
这周主要进行的工作是书籍模块的基本功能完善,”我的书架“附加功能的完成,以及前端界面的设计。故下面的汇报只有两个人的内容。1.小组成员汇报1) issue:严影(界面设计模块):何一鸣(书籍查找模块):2)branch2.燃尽图这周,书籍模块的功能已全部完成,现在剩下的工作便是继续进行页面设计,同时进行数据库添加,项目调试,发布,反馈,完善。3.会议照片因这周的会议安排在了晚上九点半(实验课下课后),时间比较紧张,然后说的内容比较多,...
2021-12-22 00:12:32 658
原创 图书馆小程序——Gamma迭代——第十二周会议记录
这周主要的任务是,书籍模块仍在进行,个人中心模块附加功能实现,界面设计模块开始进行,其他模块进行完善,各自对自己的技术文档进行修改完善。1. 工作汇报issue:这里只有三位成员的issue和branch,其他成员很小的变动直接更改在最新的项目里了,故这里直接在下面以文字形式给出。何一鸣(书籍模块):吴卿怡(个人中心模块):严影(页面设计模块):韦灵雅(管理员模块): 完善内容:如果签到超时,会显示此学生之前的预约时间。bra...
2021-12-15 00:07:11 636
原创 图书馆小程序——Beta迭代——测试报告
一、场景测试 1)用户:王同学 2)用户的需求: a)王同学想查询图书馆某本书的信息,比如是否有这本书,这本书是否可借,但不想前往图书馆。 b)王同学想提前预约座位,防止出现人到图书馆,但找不到座位的情况,亦或是约不到自己喜欢的座位,所以需要提前预约。 c)王同学想查询自己的借阅记录,但不想前往图书馆。 d)王同学想收藏自己喜欢的书籍,以便日后查看其信息。 3)...
2021-12-06 16:46:10 698
原创 图书馆小程序--Beta迭代--第十周会议记录
我们预计十一周要后端合成终版1.0,交付给前端进行设计,添加数据库,所以大家都在马不停蹄地完成自己的部分~ 同时也会调试后端功能,遇到问题找相应的技术人员解决问题。下面是小组成员对第十周的总结和第十一周的计划:1.issue:何一鸣:(书籍查找模块)杨坤(预约模块)吴卿怡:(个人中心模块)韦灵雅:(管理员模块)2.Brach:杨坤:韦灵雅:吴卿怡:何一鸣:3.燃尽图:4.本周总...
2021-11-30 00:01:57 950
原创 图书馆小程序—Beta迭代--第九周会议记录
Alpha迭代结束,小程序的大体框架已形成。许梦真同学的登录模块已完成;吴卿怡同学的个人中心模块基础功能已完成,修改功能待完成;韦灵雅同学的管理员模块完成80%;杨坤同学的预约模块完成50%;何一鸣同学的书籍模块完成40%;1.小组成员工作汇报(含issue和branch)issue:杨坤:韦灵雅:何一鸣:Branch:杨坤:韦灵雅:何一鸣:2. 燃尽图:第八周完成的任务量与预期相符,第九周大家稍有松懈~3...
2021-11-22 23:28:48 330
原创 图书馆小程序--Alpha迭代--测试报告
2. 测试:3.项目截图: 图1 登录 图2 修改密码 图3 查询书籍 图4 预约 图5 预约座位图6 个人中心 图7 借阅信息 图8 身份信息图9 管理员 图10 借书 ...
2021-11-15 11:40:54 154
原创 图书馆小程序—Alpha迭代—第七周会议记录
1.小组成员工作汇报(Issue和branch)注意:第一阶段五个人参与了代码的编写,所有这里面只有五位成员的issue,其余两位同学的工作在第二阶段。许梦真:杨坤:何一鸣:韦灵雅:吴卿怡:Branch:(含代码)许梦真:杨坤:何一鸣:吴卿怡:韦灵雅:2.燃尽图3.例会照片4.小组总结:第七周大家都在努力追赶进度,因为第八周就要合成,所以大家都在完善自己的基础功能。现登录...
2021-11-09 17:07:44 210
原创 图书馆小程序--Alpha迭代--第六周会议记录
1.小组介绍组长:杨坤小组成员:杨坤、何一鸣、韦灵雅、吴卿怡、许梦真、严影、林正远2.流程图(分模块):3. 目前的小组分工:许梦真:登录,验证用户信息。1.制定数据库存储用户的信息。2.找不到用户,需响应用户,让其重新输入。3.在登陆页面,也可以修改密码4.分为管理员和用户,需跳到不同的主页面。何一鸣:与书有关的操作。制定数据库存书的信息。 展示图书馆热门书籍,或者分类展示书籍。 搜索书籍,并展示信息。 附加:可以将书籍添加到“我的书架”.
2021-11-01 10:48:06 247
原创 归并排序MergeSort
1.有序数组的平方双指针,选出大的放在新数组的最后。class Solution { public int[] sortedSquares(int[] nums) { int n=nums.length; int[] ans=new int[n]; int i=0,j=n-1,z=n-1; while(i<=j&&z>=0){ if(nums[i]*nums[i]>=n
2021-09-23 09:59:07 68
原创 深度优先搜索——二叉树的最小深度
一、深度优先与 求最大深度不同:不能当递归此结点时,若为空则返回0,要提前判断是否为空,为空则不进入递归。因为0肯定是最小深度,但其实这一部分为空,不能算作最小深度。比如这个例子,只有右子树,如果按为空则返回0,那最小深度为1,但其实不然。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode r...
2021-08-26 20:22:57 216
原创 深度优先搜索——平衡二叉树
一、自顶向下的递归判断每个结点本身是不是平衡二叉树,再判断他的左右子树是不是平衡树缺点:重复算很多次高度Java:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val ...
2021-08-26 19:34:56 97
原创 深度优先搜索——二叉树的层序遍历II
翻转 正序的结果即可Java:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left..
2021-08-26 16:23:20 133
原创 深度优先搜索——二叉树的层序遍历
注意:要按层次,分别放在一个表格里 再一起返回Java:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, ..
2021-08-26 16:18:54 179
原创 深度优先搜索——二叉树的最大深度
一、深度优先搜索Java:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, ..
2021-08-26 10:45:40 175
原创 深度优先搜索——对称二叉树
与 ”相同二叉树“ 类似一、深度优先/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode l..
2021-08-26 10:07:06 80
原创 深度优先搜索——相同的树
一、深度优先搜索,递归Java:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode lef..
2021-08-26 09:50:57 154
原创 深度优先搜索——恢复二叉搜索树
注意:错位的两个不一定是紧挨着的,所以要交换的是最早的错位一个 和 最晚的错位的一个,即要遍历完所有的结点,找到这两个错位的结点。用到中序遍历栈:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int va...
2021-08-25 20:33:08 119
原创 深度优先搜索——验证二叉搜索树
一、递归法二、中序遍历,保留前一个结点的值/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, T..
2021-08-25 16:26:17 97
原创 深度优先搜索——二叉树的中序遍历
递归(略)栈:Java:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left,..
2021-08-25 11:05:02 187
原创 动态规划——爬楼梯
用滚动数组的思想。滚动数组是一种能够在动态规划中降低空间复杂度的方法。有时某些二维dp方程可以直接降阶到一维,在某些题目中甚至可以降低时间复杂度,是一种极为巧妙的思想。简要来说就是通过观察dp方程来判断需要使用哪些数据,可以抛弃哪些数据,一旦找到关系,就可以用新的数据不断覆盖旧的数据量来减少空间的使用。例如此题,每次只需保留前两个。class Solution { public int climbStairs(int n) { int p=0,q=0,r=1;...
2021-08-14 21:44:14 114
原创 动态规划方法
基本思想动态规划是一种将问题实例分解为更小的,相似的子问题,并存储子问题的解,使得每个子问题只求解一次,最终获得原问题的答案,以解决最优化问题的策略。引用:https://blog.csdn.net/u013250416/article/details/80558542用一个例子来看一下 递归,记忆化搜索,动态规划的区别斐波那契数列:f(i)=f(i−1)+f(i−2),i>=31. 递归。有大量的重复计算int f(int n){ if(n == 1 || .
2021-08-14 21:32:23 220
原创 动态规划——不同路径II
解析:与“不同路径I”类似,只不过多了一些判断。用一个二维数组保存每一个位置的路径数。当赋值0行0列时,如果碰到障碍物,则此位置为0,且之后的位置也无法到达,也为0;然后赋值剩余的位置,如果是障碍物则为0,不是则为上面和左面的加和。(答案中用一维数组保存的方法我没理解......)Java:class Solution { public int uniquePathsWithObstacles(int[][] obstacleGrid) { int m=o...
2021-08-14 20:29:49 226
原创 动态规划——不同路径
一、数学方式从m+n-2格中选出m-1个向下的格Java:class Solution { public int uniquePaths(int m, int n) { long steps=1;//注意这里的类型 for(int x=n,y=1;y<m;x++,y++){ steps=steps*x/y; } return (int)steps;//这里需要类型转换 }...
2021-08-12 22:38:09 103
原创 动态规划——跳跃游戏
class Solution { public boolean canJump(int[] nums) { int maxPosition=0,n=nums.length; for(int i=0;i<n;i++){ if(i<=maxPosition){ maxPosition=Math.max(maxPosition,nums[i]+i);//能到达的最远距离 ...
2021-08-12 21:49:28 119
原创 动态规划——最大子序和
Java: 两种思路class Solution { public int maxSubArray(int[] nums) { if(nums.length==1) return nums[0]; int ans=nums[0],max=nums[0]; for(int i=1;i<nums.length;i++){ if(ans<0){ ans=0;//如果此时小于0,则归..
2021-08-12 19:52:11 71
原创 动态规划——跳跃游戏II
一、正序每次找能到达的最远端,然后保存最远端的位置。注意 其实各个位置之间并不干扰,此位置能到达哪里只决定于此位置的i和nums[i]所以,我们需要遍历所有的i,因为我们需要找到每一步的最大值。所以外循环就固定下来了。然后我们需要在每一步之内算出最大值,所以就需要一个max来存储,每次都更新max,直至i==end的时候,保存max为end。Java:class Solution { public int jump(int[] nums) { int e..
2021-08-12 18:35:59 239 1
原创 动态规划——括号生成
深度优先搜索:有剩余的左括号,则有左子树;有剩余的右括号,则有右子树。但如果剩余的左括号严格大小剩余的右括号,则剪枝return。当两者都为0时,则找到一种情况。Java:class Solution { public List<String> generateParenthesis(int n) { //深度优先搜索,减枝 List<String> list=new ArrayList<String>();...
2021-08-09 17:29:55 254
原创 哈希表——克隆图
一、深度优先Java:/*// Definition for a Node.class Node { public int val; public List<Node> neighbors; public Node() { val = 0; neighbors = new ArrayList<Node>(); } public Node(int _val) { val = _va..
2021-08-09 16:34:23 79
原创 哈希表——由中序和后序序列构建二叉树
后序序列最后一个就是根节点,再在中序序列中定位根节点.......一、递归法Java:这里要把两个数组和postRight定义为成员变量,这样就不用一直传参了。如果当作参数传递的话,会超出时间限制。C++需要定义数组的时候需要指明大小,所以这里c++数组还是当参数传递的。 注意:要先构建右子树,再构建左子树,原因我也没太理解........./** * Definition for a binary tree node. * public class TreeNode { * ..
2021-08-06 21:39:33 230
原创 Java——Stack
Java堆栈Stack类已经过时,Java官方推荐使用Deque替代Stack。Deque堆栈操作方法:push(), pop() 删除并返回 , peek(). 返回栈顶元素 isEmpty() 是否为空普通队列(一端进另一端出):Queue queue=new LinkedList() 或 Deque deque=new LinkedList()双端队列(两端都可进出)、堆栈: Deque<Type> deque=new LinkedList<Type>...
2021-08-06 11:15:44 91
原创 哈希表——由前序和中序序列构造二叉树
两种方法:一、递归有先序序列得到根节点的值,创建根节点,再递归构造左子树,右子树。 由先序得到根结点,再在中序序列找到根节点,根节点左边就是左子树,右边就是右子树。在中序序列中找根节点,就可以用到哈希结构,这里是想得到她的坐标,所以value存坐标。Java:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * ..
2021-08-06 10:55:10 176
原创 哈希表——矩阵置零
原地算法:就是不新创建矩阵空间,在原有矩阵上进行修改,得到结果矩阵。一、可以用两个一维数组,分别存储哪一行哪一列有元素0,然后置0即可,使用了O(m+n)的空间.二、使用两个布尔类型变量存储0行和0列是否有元素0,然后用0行存储每一列(除0列)是否有0,0列存储每一行(除0行)是否有0。再从[1][1]开始依次赋值除0行0列的元素,最后再通过变量值来给0行0列赋值。Java:class Solution { public void setZeroes(int[][] m...
2021-08-05 11:42:14 238
原创 哈希表——字母异位词分组
解析:排序作为key,然后将value加到map中。Java:class Solution { public List<List<String>> groupAnagrams(String[] strs) { Map<String,List<String>> map=new HashMap<String,List<String>>(); for(String str:strs)...
2021-08-03 20:56:54 137
原创 哈希表——有效的数独
两者存储方式,用数组 或者 数组与哈希表结合来存储。一、数组用三个9*9数组,存储81个状态,以num=board[i][j]-'1'为另一维索引,即以表中的数字为索引。Java:class Solution { public boolean isValidSudoku(char[][] board) { boolean[][] row=new boolean[9][9]; boolean[][] column=new boolean[9]...
2021-08-03 17:40:26 197
原创 C++——queue
定义:queue<type> MM.empty() M.push() //在已有元素最后添加 M.pop() //删除第一个元素,但不返回 M.front() //返回第一个元素 M.back() //返回最后一个元素 M.size() //已有元素的个数做题总结:遍历队列的所有元素://之前做题中用到了while(!queue.empty()){ combinations.push_back(queue.front())...
2021-08-02 21:28:45 62
原创 Java——ArrayList 动态数组
ArrayList 动态数组,通过添加和删除元素,就可以动态改变数组的长度。优点:自动改变大小;灵活的插入、删除元素;查找、修改效率高。局限:比一般的数组速度慢一些。创建:ArrayList arr=new ArrayList(); ArrayList arr=new ArrayList(3)//初始容量为3 ArrayList arr=new ArrayList(a) //用一个集合或数组初始化添加:arr.add(object valu...
2021-08-02 21:12:53 563
原创 Java——Queue(LinkedList)
目前在做题中只遇到了用LinkedList实现队列的数据结构,之后会持续更新~借用别人的一句话,Java不太推荐用Vector和Stack。LinkedLsit类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。创建:Queue<String> queue=new LinkedList<String>();添加:queue.offer("a")遍历:for(String s:queue) {System.out.println(s);}.
2021-08-02 20:49:15 807
原创 字符串——电话号码的字母组合
这道题我直接看的答案,共有两种方法。根本上说就是广度优先和深度优先。一、广度优先也就是用队列来存结果,读一个数字,把对应字符加入队列;再读一个数字,将队列中已有字符依次弹出,与此数字对应的字符依次组合,再加入队列。重复此操作。Java:class Solution { public List<String> letterCombinations(String digits) { //广度优先 //声明一个全局变量,保存所有组合。 ...
2021-08-02 20:23:48 243
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人