自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Peanut 大本营

学习记录

  • 博客(24)
  • 资源 (7)
  • 收藏
  • 关注

原创 动态规划:连续子串和

    给定一个非负整数数组array和一个整数k,验证array中是否有长度大于1的子串,使该子串的和等于k的整数倍。如数组array = [23, 2, 4, 6, 7],k = 6,因为2 + 4 = 6,所以返回true。    方法一:按照典型的动态规划方法,对数组进行两层遍历。该方法时间复杂度为O(n^2)。 public boolean checkSubarraySum(int[...

2018-04-26 20:58:32 890

原创 动态规划:回文子串的长度

    给定一个字符串,求其最长的回文子串的长度。如字符串"abcdcba"的最长回文子串长度为7,而"aebfcgdhcibja"的最长回文也是"abcdcba",长度也是7.    分析:典型的动态规划问题,用dp[i][j]记录字符串中从字符 i 到字符 j 中最长回文子串的长度,则                 if (s.charAt(i) == s.charAt(j)) {     ...

2018-04-25 20:32:51 137

原创 动态规划:目标和

    问题一:给定一个正整数组nums和一个常数S,要求从nums中取出若干各数,使它们的和为S,问有几种取法。    分析:按照0-1背包问题的方法 public int getSum(int[] nums, int S) { int[][] dp = new int[nums.length + 1][S + 1]; for(int i = 0; i <= nums.length...

2018-04-24 21:56:18 1056

原创 动态规划:0-1 背包问题

    0-1背包问题是典型的动态规划问题,需要求解的是,为了体积V的背包中物体总价值最大化,N件物品中第i件应该放入背包中吗?(其中每个物品最多只能放一件)。    思路:定义一个二维数组f[N][V],其中每个元素代表一个状态,即前i个物体中若干个放入体积为V背包中最大价值。其中f[i][j]表示前i件中若干个物品放入体积为j的背包中的最大价值。 分别对i和j进行循环,从小到大逐步计算,其中,...

2018-04-22 23:43:17 653

原创 动态规划:游戏赢家(一)

    给定一个非负数组,A、B两人玩游戏,轮流从数组的头部或者尾部取出元素,加到各自的和中,直到数组元素取完,取到的元素和最大的玩家赢。问对于给定的数组,先开始的玩家能否保证赢得游戏(如果相等也算先手的玩家赢)。    例如给定数组为[1, 5, 233, 7],A为开始第一步的玩家。A可以取1或者7,如果A先取1,剩下[5, 233, 7];B可以取5或者7,但不管B取任何元素,A都可以取23...

2018-04-19 21:08:27 679

原创 动态规划:等差子数组

    给定一个整数数组,计算其等差子数组的个数(至少有算个元素)。如对于数组[1, 2, 3, 4],其等差子数组有[1, 2, 3], [2, 3, 4] 和 [1, 2, 3, 4]。    分析:只需遍历一次,把等差数列的长度分别计算出来。如果长度为3,其中包含的子数组个数为1,长度为4,包含 2 + 1 个,长度为5,包含 3 + 2 + 1 个,依此类推。 public int nu...

2018-04-18 23:15:55 898

原创 动态规划:子数组的和

    给定一个正整数数组,问能否把其分成两个子数组,使这两个子数组的和相等。    分析:先把数组和sum求出来,题目实际上是求是否存在子数组,使该子数组的和等于sum的一半。    方法一:用sum的一半,不断减去数组中元素,把所有可能的差值算出来,看是否有等于0。该方法时间复杂度和空间复杂度较高。    方法二:递增法,分别算出子数组长度分别为1,2 ... n 时,看子数组的和是否有等于s...

2018-04-18 21:41:13 884

原创 字符串:判断子串

    给定两个数组s和t(只包含小写字母),判断s是否为t删除若干字符后得到的子串。    若单纯判断是否为子串,过程比较简单,只需要设置两个指针。 public boolean isSubsequence(String s, String t) { int is = 0, it = 0; while(is < s.length() &&amp...

2018-04-17 21:17:04 6300

原创 动态规划:摇摆子数组

    给定一个数组,求其最长摇摆子数组的长度。    摇摆数组:数组的元素关系按照递增、递减、递增、递减...规律变化的数组,如[1,3,2,5,4]。    数组的摇摆子数组:删除某些元素后,剩下的元素按照原来的顺序组成摇摆数组。如数组[1,17,5,10,13,15,10,5,16,8],删除部分元素后得到的其中一个最长摇摆子数组为[1,17,10,13,10,16,8],其长度为7。   ...

2018-04-16 23:15:27 1413

原创 动态规划:不含相同数字的数字个数

    给定一个常数n,求满足0<=x<10^n,且不包含相同数字的x的个数。例如给定n = 2,则 0<=x<100,且x不能为以下数字:11,22,33... 99,因此x的个数为91。    分析:当n=0时,只有一个值0             当n=1时,除0外,x可以是1,2..9中的任意一个,个数为9。             当n=2时,除了一位的数字,两位...

2018-04-14 22:22:12 544

原创 动态规划:解码方式

    给定一个数字字符串,其中的数字是按以下编码方式的结果。求对给字符串进行解码时,有多少种解码方式。如对于编码“12”,可以解码成“AB”(“1”,“2”)或“L”(“12”)。    分析:把解码的结果分为两部分:最后一个数为个位数和最后一个数为十位数。如果以个位数结尾,解码下一个数字的时候,有可能可以有两种方式:下一个数字单独作为一个值,或者与前面的数字合并组成一个十位数(前提是 10&l...

2018-04-14 20:44:11 458

原创 动态规划:面积最大正方形

    给定一个矩阵,其中的元素为0或者1,要求找出其中元素全为1的面积最大的正方形。如下图的矩阵,其元素全为1的最大正方形面积为4。    方法一:对于每一个元素,把以其为右下角的矩阵的和求出来,然后根据这个和与左上边的元素的和的关系来求解。但这种方法时间和空间复杂度都较高。 public int maximalSquare(char[][] matrix) { if(ma...

2018-04-14 12:32:11 3552 2

原创 动态规划:硬币个数

    给定一个代表硬币不同面值的数组,和一个硬币的总数额,求用硬币凑出该总数额的最小硬币个数。如果无法凑出该面额,返回-1。    如coins = [1, 2, 5],amount = 11。    方法一:用总额减去每一个面值,记录剩余总额,并循环进行,直到出现总额为0或者所有剩余总额都为负数。这种方法简单暴力,时间复杂度和空间复杂度都比较高。 public int coinChang...

2018-04-12 21:25:04 1252

原创 动态规划:股票最大收益

    给定一个数组,第i个元素代表第i天的股票价格,股票买卖规则如下:必须先买入才能卖出,可以多次买卖,同一天只能进行一次交易,卖出股票后必须暂停交易一天。求可以得到的最大收益。    分析:数组问题是典型的动态规划问题,动态规划问题的思路就是:用变量保存状态,并根据当前状态推测下一步状态。    股票有三种交易状态:buy、sell、rest(不交易),因此,股票操作就是这三种状态的组合   ...

2018-04-11 22:41:48 1679

原创 动态规划:最长递增子串

    给定一个数组nums,求其最长的递增子串长度。如数组[10, 9, 2, 5, 3, 7, 101, 18],其最长递增子串为[2, 3, 7, 101],长度为4.    方法一:直接遍历,复杂度为O(n^2)。    方法二:把长度为i + 1的递增子串的最后元素的最小值记录在数组tails中,如对于数组 [4,5,6,3],tails中的记录为:    len = 1   :    ...

2018-04-10 23:04:27 2294 2

原创 动态规划:平方数个数

    给定一个正整数n,计算和等于n的最小平方数个数。平方数:1,4,9,16,25...。例如n=12=4+4+4,因此最小平方数个数为3;n=13=4+9,因此最小平方数为2.    分析:从1开始,用一个数组来记录所有比i小的数的最小平方数个数,当计算i的最小平方数个数时,i可以看成是j^2和i-j^2的和,那么i的最小平方数个数就是i-j^2的最小平方数加1.    即有如下规律:dp[...

2018-04-10 20:39:18 847

原创 动态规划:最大乘积子串

    给定一个数组,求其中乘积最大的子串的乘积。如数组[2,3,-2,4],最大乘积为2*3=6.    分析:最简单的方法是设置一个二维数组p[i][j]表示从 i 到 j 这个子串的乘积,然后求p中的最大值。但这种方法时间复杂度和空间复杂度都比较高。    计算子串的乘积,如果中间包含了0,那么整个子串的乘积就是0。因此,需要以0为分界点,把数组分成几个子串,再分别求最大乘积。计算子串的最大...

2018-04-03 23:16:09 444

原创 动态规划:游戏路径

        给定一个方格,机器人每步可以向右或向下移动一格,其中方格中的可能会有障碍物,用矩阵中相应位置的1表示。如下面的矩阵表示一个3*3的方格,其中1的表示该位置有障碍物。有障碍物的方格机器人不能通过。求机器人从左上角走到右下角可能有多少条路径。    分析:机器人走到每个方格是方式有两种:从左边过来,或者从上面过来,因此走到每个方格的路径数是走到左边方格的路径数加上走到上面方格的路径数。...

2018-04-02 21:33:46 499

原创 动态规划:最小代价阶梯

    给定一个数组,代表攀登每级阶梯的代价,每次攀登时,可以爬一级,也可以爬两级(越过一级)。求爬到最顶部时的最小代价。    分析:对每一级阶梯,有两种选择:爬或不爬。如果不爬,那么前一级阶梯必须要爬,越过这级阶梯的代价就是爬前一级阶梯的代价;如果爬,那么前一级阶梯可以爬也可以不爬,代价为爬和不爬前面一级阶梯代价的最小值加上当前阶梯的代价。 public int minCostClimb...

2018-04-02 20:58:16 416

原创 动态规划:打劫房间

    给定一个数组,表示一条街上每个房间的金钱数。盗贼抢劫这条街时,如果抢劫了相邻的两个房间,则会触发报警。问盗贼最多能抢到多少钱。    分析:对于每一个房间,有两个选择:抢劫或者不抢劫。如果不抢,前一个房间可以抢也可以不抢,取两者的最大值就是当前的最大值;如果抢,那么前一个房间则不可以抢,得到的钱数是不抢前一个房间得到的钱数加上抢劫当前房间得到的钱数。用一个二维数组记录访问每一个房间时可以得...

2018-04-01 21:30:14 638

原创 字符串:重组

    给定一个字符串,要求对其进行重组,使相同的字符不相邻,如果无法满足要求,则返回空串。如字符串“aab”,重组后为“aba”。    分析:先统计每个字符出现的次数,把字符和次数存入HashMap中,对HashMap根据次数进行排序,然后再进行重组:前一半append,后一半间隔插入。(其实也可以不用排序,只需找到出现次数最多的那个字符,先append该字符即可) public Str...

2018-04-01 18:57:02 1014

原创 字符串:删除若干字符的最长串

    给定一个字符串s和一个词典d,找出d中可以由s删除若干字符而得到,最长且按字母排序最靠前的字符串。如s =  "abpcplea",d = ["ale","apple","monkey","plea"],则返回"apple"。    方法一:两个字符串从前往后遍历,如果字典里的字符串str所有字符在字符串s中按顺序出现,那么说明str可以由s删除若干字符后得到。记录满足最长且首字母

2018-04-01 18:29:12 426

原创 数组:颜色分类(两路排序)

    一个数组中,分别以0,1,2代表红、白、蓝三种颜色,要求对数组进行排序,使表示相同颜色的元素相邻,且按照红、白、蓝的顺序进行排序。    方法一:使用交换的方法,依次访问时,把0放到左边,把2放到右边,1不动,交换完成之后,排序就完成了 public void sortColors(int[] nums) { int red = 0, blue = nums.leng...

2018-04-01 15:46:01 1075

原创 数组:合并区间

    给定若干个区间,对重叠的区间进行合并。如[1,3],[2,6],[8,10],[15,18],合并后的区间为[1,6],[8,10],[15,18]。    方法一:先把区间根据下界进行排序,然后判断重叠和合并/** * Definition for an interval. * public class Interval { * int start; * int ...

2018-04-01 12:17:52 1376

yolov5x.pt

ultralytics版yolov5x预训练模型,由于不可描述的原因,官方下载特别慢,提供给需要的小伙伴

2020-11-11

证件照白底改蓝底(Photoshop)

证件照白底改蓝底或红底,操作简单,对头发还原度高。

2016-04-16

JSoup demo

java的HTML解析工具jsoup的demo,eclipse工程

2015-07-23

Solr配置入门教程

自己总结的solr配置入门教程,包括从mysql和xml里导入数据,建立索引的详细过程,其他格式类似。

2015-07-23

httpclient http客户端

java模拟的http客户端,eclipse工程,直接可用

2015-07-23

TFIDF的java实现

TF-IDF的java实现,eclipse工程,直接可用

2015-07-23

程序设计+第2版+王挺+课后答案

程序设计课后答案(王挺 清华大学出版社第2版),供学习这本教材的同学参考学习

2014-04-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除