算法
小嘚
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Dota参议院贪心算法
贪心原创 2023-02-15 11:05:01 · 96 阅读 · 0 评论 -
【动态规划】打家劫舍
dfs 动态规划原创 2023-02-14 10:07:18 · 92 阅读 · 0 评论 -
kmp算法
kmp原创 2023-02-04 20:36:21 · 88 阅读 · 0 评论 -
【线性扫描】数组中三个数的最大乘积
线性扫描原创 2023-01-22 09:56:44 · 119 阅读 · 0 评论 -
反转链表(递归)
反转链表原创 2023-01-22 09:31:44 · 83 阅读 · 0 评论 -
两数之和的算法题(Map做标记)
刷算法。。慢慢重新打基础吧原创 2023-01-18 00:07:17 · 102 阅读 · 0 评论 -
类似于斐波拉契数列,数值很大(动态规划)
题目:import java.util.Scanner; public class Main { public static final int mod = 1000000007; public static int[] f = new int[(int)1e7 + 1]; public static void main(String[] args) { Scanner scanner = new Scanner(System.in); i原创 2021-12-30 21:02:45 · 225 阅读 · 0 评论 -
斐波那契数列(帮助你回忆递归和动态规划)
斐波那契数列是能体现递归方法和动态规划最经典的例子了,帮斐波那契数列理解好,相信能的深入下去了。1 1 2 3 5 8递归int fibo2(int n){ if(n == 1 || n == 2) return 1; return fibo2(n-1) + fibo2(n-2);}写递归,就要先写何时、何种情况我们应该去返回值,然后就是写如何去正确一次又一次的深入进去。递归每次的进入都是一个新的问题(递归就是把一个大问题不断的拆分成小问题)动态规划int fi原创 2021-12-30 20:44:05 · 127 阅读 · 0 评论 -
算法题:字符串中的唯一个字符 难度:简单
这是我自己的暴力算法,由于不知道该怎么给map链表重复的值赋值,所以用了、这个class Solution { public int firstUniqChar(String s) { char[] kk = s.toCharArray(); int flag = 1; for(int i=0;i<kk.length;i++){ for(int j=0;j<kk.length;j++){原创 2021-12-10 18:13:33 · 873 阅读 · 0 评论 -
算法题:矩阵置零 难度:中等
这道题我认为是比较简单的,因为自己写出来了…这是我的解法class Solution { public void setZeroes(int[][] matrix) { int r = matrix.length; int c = matrix[0].length; int kk[] = new int[r*c*2]; int s = 0; for(int i=0;i<r;i++ ){原创 2021-12-09 23:42:14 · 110 阅读 · 0 评论 -
算法题:有效的数独 难度:中等
这是第一次写中等题,但结果还是很差…不想用暴力算法,但自己又无法想到一个算法去解决官方解法:class Solution { public boolean isValidSudoku(char[][] board) { int[][] rows = new int[9][9]; int[][] columns = new int[9][9]; int[][][] subboxes = new int[3][3][9]; for (i原创 2021-12-06 22:17:03 · 419 阅读 · 0 评论 -
算法题:重塑矩阵 难度:简单 有一个算法公式很重要对于这道题目
自己写的暴力算法,没有任何可学习的地方class Solution { public int[][] matrixReshape(int[][] mat, int r, int c) { int r1 = mat.length; int c2 = mat[0].length; int kk[][] = new int[r][c]; int[] source =new int[r1*c2]; int k = 0;原创 2021-12-05 17:45:08 · 243 阅读 · 0 评论 -
买卖股票之动态规划
这道题的话,其实自己思绪是想出来了点的,但写着写着就漂远了。这道题的话,又用到了动态规划(Those who can’t remember the past eventually repeat it)public class Solution { public int maxProfit(int prices[]) { int minprice = Integer.MAX_VALUE; int maxprofit = 0; for (int i =原创 2021-12-03 00:25:24 · 488 阅读 · 0 评论 -
算法题:两个数组的交集 难度:简单 知识点:哈希表、二分查找、双指针
题目:给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。这道题本来题目都没读懂的…????然后这是自己哈希表的解法class Solution { public int[] intersect(int[] nums1, int[] nums2) { int size1,size2; size1 =原创 2021-12-01 18:59:29 · 157 阅读 · 0 评论 -
算法题:合并两个有序数组 难度:简单 知识点:双指针
首先这道题有这种便捷的方法,应用已经封装好的方法。class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { for (int i = 0; i != n; ++i) { nums1[m + i] = nums2[i]; } Arrays.sort(nums1); }}就直接把nums2的数组先拼接在nums1后,直接原创 2021-12-01 17:00:35 · 562 阅读 · 0 评论 -
算法题:最大字序和 难度:简单
题目给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4] 输出:6 解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。示例 2:输入:nums = [1] 输出:1 示例 3:输入:nums = [0] 输出:0 示例 4:输入:nums = [-1] 输出:-1 示例 5:输入:nums = [-100000] 输出:-100000这道题…自己写的暴原创 2021-11-30 15:12:41 · 185 阅读 · 0 评论 -
算法题:存在重复元素 难度:简单
这道题可以用直接暴力算法两个循环,但在java中可以应用HashSetclass Solution { public boolean containsDuplicate(int[] nums) { Set<Integer> res = new HashSet<>(); boolean a = true; for(int i : nums) { a = res.add(i); if原创 2021-11-29 23:00:10 · 339 阅读 · 0 评论 -
算法题:合并两个有序链表 难度:简单
链表的题,遗忘得有点差不多了,所以也直接看题解了/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val;原创 2021-11-28 22:56:16 · 276 阅读 · 0 评论 -
算法题:有效的括号 难度:简单
做这道题的时候,自己想不到什么很好的方法…就直接看题解了解法1class Solution { public boolean isValid(String s) { Stack<Character> stack = new Stack<Character>(); for(char c : s.toCharArray()){ if(c == '{'){stack.push('}');} else原创 2021-11-27 16:04:18 · 178 阅读 · 0 评论 -
算法题: 最长公共前缀 难度:简单
这是一个大神的很简易的写法,自己写了半天…又臭又长class Solution { public String longestCommonPrefix(String[] strs) { if(strs.length==0)return ""; //公共前缀比所有字符串都短,随便选一个先 String s=strs[0]; for (String string : strs) { while(!string.st原创 2021-11-26 09:36:13 · 101 阅读 · 0 评论 -
算法题: 罗马数字转整数 难度:简单
罗马数字转整数class Solution { public int romanToInt(String s) { int b = 0; char[] ss = s.toCharArray(); Map<Character,Integer> map = new HashMap<>(); map.put('I',1); map.put('V',5); map.put('X',原创 2021-11-25 22:32:52 · 88 阅读 · 0 评论 -
回文数 难度:简单
自己的写法class Solution { public boolean isPalindrome(int x) { if(x<0){ return false; } String a = Integer.toString(x); String b = new StringBuilder(a).reverse().toString(); if(a.equals(b)){原创 2021-11-25 15:27:38 · 123 阅读 · 0 评论 -
算法题:整数反转 难度:简单
整数反转给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。class Solution { public int reverse(int x) { String xString = Integer.toString(x); String string = xString;原创 2021-11-23 20:30:55 · 240 阅读 · 0 评论 -
算法题:两数之和 简单
准备用java开始刷算法了…但有点暗了,但没事,俗话说:"一棵树种植的最好时机是二十年前,其次是现在 "。两数之和自己的解法:class Solution { public int[] twoSum(int[] nums, int target) { int[] b= new int[2]; int a = nums.length; for(int i=0;i<a-1;i++){ for(int j=i+1;j<原创 2021-11-23 12:10:33 · 340 阅读 · 0 评论
分享