算法打卡
Sheep、
河海大学在校本科生一枚
展开
-
蓝桥杯迷宫问题(Java实现)
因为最近有蓝桥杯考试,但我对于BFS还不是很熟悉。特意这里写文,记录我学习写蓝桥真题 迷宫问题的过程。第一步将这么大又臭又长的字符串转为数组存储就吓到我了,原来只需要把字符连接起来,然后arr[i][j] = string.charAt(i*50+j) 就可以了package forlanqiao19;import java.util.Deque;import java.util.LinkedList;import java.util.Queue;public class Main原创 2022-04-04 09:55:50 · 1224 阅读 · 1 评论 -
LeetCode斐波那契/青蛙爬楼梯系列
今天做了一系列题目,发现很有趣,而且实现的方法很多,那就是著名的斐波那契问题,而斐波那契问题和爬楼梯问题很类似,只是初始条件不同,斐波那契f(0) = 0,f(1) = 1 , f(2) = 1青蛙爬楼梯 f(0) = 1, f(1) = 1 , f(2) = 2;列出可以使用的算法//1.递归(重复计算O(2^n) 超时)//2.记忆化递归(O(n))//3.动态规划//4.动态规划优化(滚动数组) O(n)//5.矩阵快速幂O(logn)//6.记住通项公式O(1)这是一个使.原创 2022-03-09 18:42:30 · 6554 阅读 · 2 评论 -
LeetCode-只出现一次的数字专题I、II、III
该专题均要求线性时间复杂度,常数空间复杂度,所以不能用集合遍历,不能排序。考虑采用位运算[只出现一次的数字1]除了答案外,其余都是两个成对,根据 a ^ 0 = a ; a^ a = 0 ;用0去异或数组中所有元素,最后的元素就是答案class Solution { public int singleNumber(int[] nums) { int a = 0; for(int i : nums){ a = a^i; .原创 2022-03-09 12:55:54 · 124 阅读 · 3 评论 -
七个排序算法总结(Java实现)
//冒泡 public static void bubbleSort(int[] arr){ int temp = 0; boolean flag = false; for (int i = 0; i < arr.length - 1; i++) { for (int j = 0; j < arr.length - 1 - i; j++) { if (arr[j]>arr[j原创 2022-03-09 09:50:17 · 339 阅读 · 1 评论 -
LeetCode打卡
1.两个数组的交集由于所求交集要求元素不重复,所以我们想到用集合HashSet处理遍历第一个数组,将所有元素(不含重复)放入集合a中,再遍历第二个数组,如果有元素存在于集合a中,那么将该元素存入集合b,集合b即为交集,遍历存放数组即可class Solution { public int[] intersection(int[] nums1, int[] nums2) { HashMap<Integer,Integer> map = ne原创 2022-03-08 19:30:24 · 411 阅读 · 12 评论 -
LeetCode-88、118、350打卡
class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { //链表也有合并两个有序的,其中链表因为有next指针所以比较容易连起来,而数组只能通过新建数组,然后一个个放进去通过索引连接起来 //逆向双指针 int t1 = m-1; int t2 = n-1 ; int t = m + n - 1; ...原创 2022-03-06 20:55:30 · 128 阅读 · 3 评论 -
LeetCode-20、232、242、383,剑指offer-9、30打卡
class Solution { public boolean isValid(String s) { if (s == null){ return true; } char[] arr = s.toCharArray(); MyStack stack = new MyStack(); for(int i = 0 ; i < arr.length ; i++){...原创 2022-03-05 20:44:29 · 166 阅读 · 1 评论 -
Leetcode-2022/3/3:剑指offer5、6、24、28
1.class Solution { public int[] reversePrint(ListNode head) { int len = 0; ListNode temp = head; while(temp != null){ len++; temp = temp.next; } int[] arr = new int[len]; fo原创 2022-03-03 22:12:26 · 7614 阅读 · 6 评论 -
[打卡帖]《九日集训 - 雪国列车》(第一天) 宣誓
我宣誓,我一定坚持到第九天!风雨无阻,无怨无悔!天崩地裂,海枯石烂!神挡杀神,佛挡杀佛!原创 2021-11-29 20:31:42 · 268 阅读 · 1 评论 -
算法题打卡-超人进化(剑指offer第一天)
剑指offer.30 包含min函数的栈本题主要考察栈结构的使用,压栈和弹栈操作都只需要借用top索引指向数据即可,本题难点在于如何压缩时间为O(1),如果采用遍历栈空间,时间复杂度是O(n),那么我们可以采用辅助栈B来存储最小值,思路如下:1.栈A(stack1):用来正常存储所有push进栈的数据,执行正常的push(),pop(),top()操作2.栈B(stack2): 仅当栈B为空栈或新传入数据小于B顶端数据时,将新传入数据同时放入A和B两个栈中,否则只放进A栈,此时B栈顶端数据.原创 2021-11-27 21:31:19 · 193 阅读 · 5 评论