csp刷题记录
官网上好像并不会留我的代码记录,特此记录一下
倾听雪的声音
这个作者很懒,什么都没留下…
展开
-
反转数组与倒序打印---递归法的区别
给定一个字符数组:1、倒序打印这个数组2、反转这个数组对于需求1递归到最后,直接打印当前的下标即可。static void reservePrint(char[] s,int start)//反转打印{ if(start==s.length) return; reservePrint(s,start+1); System.out.println(s[start]);}对于需求2如果按我的递归思路来,就是:把当前下标后面的全部反转好,然后把当前下标插入最后原创 2020-10-22 11:01:19 · 302 阅读 · 0 评论 -
分析:BFS算法为什么可以直接在图上找到最短路径
BFS 的核⼼思想是把⼀些问题抽象成图,从⼀个点开始,向四周开始扩散。⼀般来说,我们写 BFS 算法都是⽤「队列」这种数据结构,每次将⼀个节点周围的所有节点加⼊队列。利用 二叉树层序遍历中分层的方法.可以在图上分层,每一层距离为1....原创 2020-10-17 09:18:52 · 981 阅读 · 0 评论 -
202006-4 1246Java
总结:1、审题出错了,一直认为输入“9,26”,是在26上进行幂变换9次,其实一直是从1开始变换得。2、一直纠结于26是数字还是字符串,可见它说是数串就一定是数串,输入时26并不打引号,从这说明不了是整数。一、暴力法仅得分32,但用到得一些技巧还是要总结一下。1、String.valueOf();可以将字符,数字转化成字符串2、包裹类型.valueOf();可以将字符串,其它数字,转化成包裹类型,精度高的都能转化成精度低的。3、数字字符转数:可以先转化成字符串在转化成数如int a=In原创 2020-10-15 21:32:46 · 144 阅读 · 0 评论 -
凑零钱问题-动态规划、回溯、贪心
题目:给你k种面值的硬币,面值分别为c1,c2 … ck,每种硬币的数量⽆限,再给⼀个总金额amount,问你最少需要⼏枚硬币凑出这个金额,如果不可能凑出,算法返回 -1 。**一、动态规划:**暴力递归,记忆型递归,迭代法状态就是当前还有余额amount状态转移方程为:状态amount所需要的硬币数就是状态amount-k(结果必须大于等于0)所需要的硬币数+1,其中k是面值。三种方法的代码见找零钱动态规划代码.二、回溯决策树代码链接: 回溯法解决找零钱问题.回溯法能够找出所有的硬币原创 2020-10-14 21:05:55 · 1364 阅读 · 0 评论 -
fibonacci全(斐波那契)
1、记忆型递归(时间复杂度O(n),空间复杂度O(n))2、迭代1(时间复杂度O(n),空间复杂度O(n))3、迭代2(时间复杂度O(n),空间复杂度O(1))4、特殊公式import java.util.ArrayList;import java.util.List;//fibonacci不保存中间结果是普通递归// 保存中间结果是动态规划//递归算法时间复杂度=子问题个数*子问题时间=结点数*结点时间public class Fibonacci{ publi原创 2020-10-13 20:40:03 · 132 阅读 · 0 评论 -
四if法在二维数组上进行深度/广度优先搜索
链接: leetcode 200岛屿数量.在dfs函数中,先把选中点(row,col)感染了然后判断if(row-1>-1)if(row+1<grid.length)if(col-1>-1)if(col+1<grid[0].length)这四个条件是为了确保不会越界再在if中判断要移动的点是否满足感染条件,满足就进入dfs函数...原创 2020-10-06 19:57:32 · 191 阅读 · 0 评论 -
反转链表Java、栈
链接: leetcode 206反转链表.我的思路就是使用栈,把指向链表的引用变量压进栈中。1、先压栈class Solution { public ListNode reverseList(ListNode head) { if(head==null) { return head; } Stack<ListNode> stack=new Stack<>();原创 2020-10-05 21:28:59 · 357 阅读 · 0 评论 -
二叉树的层序遍历及应用(java)
二叉树的层次遍历1、队列的使用2、层序遍历二叉树1、队列的使用LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。import java.util.LinkedList;import java.util.Queue;public class Main { public static void main(String[] args) { Queue<String> queue = new LinkedList<原创 2020-10-03 14:09:51 · 406 阅读 · 0 评论 -
202006-2稀疏向量Java
总结:我试了数组(int[a][2]),也式了ArrayList,甚至试了往arrayList里放int[2]。但都没有成功,因为对每一个b的index我都要遍历a的index才能知道要不要乘。这一遍历就很耗时。我也试了hashmap,但使用不熟练,我是把hashmap里的key转化为set,然后用for-each遍历set,这还是用了遍历。大神直接用hashmap的contains,我还是不太熟练啊我也想到了在读入b的循环里直接计算,还是棋差一招...原创 2020-09-28 20:31:23 · 64 阅读 · 0 评论 -
202006-1线性分类器Java
总结:思路还可以,将A类点带入线,大于零就记下true,小于零就记录false.B类点也代入线,大于0也记录true,小于零记录false成功分割的条件是A的记录里全是true或全是false,B里也是,并且AB不能同时全是false或同时全是true。出错的地方就是开始只定义了一个ans,A是不是全是true已经判断好了,结果下面到B时又改了A的判断结果。解决方法是定义了一个ansA,一个ansB。还有在循环里可以大胆定义变量,编译器不会误会的(遵循用时定义原则)。import java.util原创 2020-09-26 21:57:32 · 1044 阅读 · 0 评论