
数据结构与算法
hongru303
脚踏实地
展开
-
leetCode 28实现 strStr(),BF暴力,KMP 算法
首先来 BF //BF算法, 超时 public int strIndexOf(String str1, String str2){ if (str1.length() < str2.length()) return -1; if (str1.length() == 0 || str2.length() == 0) return 0; int i; for (i = 0; i < str1.length(); i++原创 2021-09-24 12:48:14 · 100 阅读 · 0 评论 -
LeetCode13 罗马数字转整数
暴力(本方法)主要注意这三个特殊存在就好了,其他的就是累加起来,可以用hashmap,只要能映射起来就好了class Solution { public int romanToInt(String str){ if (str == null) return 0; int[] arr = new int[97]; char[] roman = {'I','V','X','L','C','D','M'}; int[] ints = {1原创 2021-09-24 10:51:32 · 89 阅读 · 0 评论 -
Java 实现全排列算法
算法时间复杂度为 n!使用回溯算法实现 //全排列 static LinkedList<LinkedList<Integer>> res = new LinkedList<>(); public void solution1(int[] nums, LinkedList<Integer> hasSel){ if (hasSel.size() == nums.length){//全排列结束,选3个数字原创 2021-09-22 17:10:41 · 151 阅读 · 0 评论 -
LeetCode198题:动态规划解决打家劫舍问题
LeetCode198题:动态规划解决打家劫舍问题打家劫舍问题是经典的动态规划问题,dp数组存储的是上一次能取得的钱的总和。初始值为dp[0] = nums[0], dp[1] = Math.max(nums[1], nums[0])。状态转移:两两一组,比较后面第一个和第二个加上之前的,哪个大则替换为该下标最大的值,也就是 dp[i - 1] , dp[i - 2] + nums[i],代码如下: public int rob(int[] nums){ int len =原创 2021-09-05 21:38:24 · 193 阅读 · 0 评论