4 heimu24

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 4w+

剑指offer 38:字符串的排列(组合)

题目:输入一个字符串,打印出该字符串中字符的所有排列,例如,输入字符串abc,打印出由字符abc、acb、bac、bca、cba、cab。思想:把字符串看成两部分,第一部分是它的第一个字符,第二部分是后面的左右字符求出第一部分所有可能的情况(通过第一个字符和其后面字符交换实现)第二部分的字符仍然可以分成:后面部分第一个字符及其之后的字符(递归实现)package test;pub...

2019-09-07 17:30:37

【二叉树-4】给定数组生成完全二叉树

题目描述:给定一个数组,生成一个完全二叉树,也就是将数组的值赋给二叉树的各个节点思想:先将数组的值全部转化树节点,并将树节点存储到LinkedList中遍历所有的父节点(除最后一个),然后给其左右孩子赋值(树结点)处理最后一个父节点,因为最后一个父节点可能没有右孩子注意:1、父节点数组下标从0到 n/2 -1 ,但是遍历时要小于n/2-1,因为最后一个父节点可能没有右孩子,当n/...

2019-08-20 18:44:35

【二叉树-3】打印二叉树中和为target的所有路径

参考链接题目描述:输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。思想:利用树的先序遍历访问所有结点,先将当前结点存储,然后更新target为target-root.val,继续递归访问其左右子树即可。如果到达叶子结点的时候,target==0,则当前路径即为所求路径import java.uti...

2019-08-20 17:59:48

【二叉树-2】二叉树的层级遍历:从上到下按层打印

题目描述:给定一个二叉树,返回其按层次遍历的节点值,即按照层次,从上到下,从左到右遍历所有结点例如:给定下列二叉树,打印结果[[1], [2, 3], [4, 5, 6, 7]]思想:使用广度优先搜素,即使用队列(先进先出)先判断根节点是否为空,若是,直接返回若非空,将根节点入队,然后判断队列是否为空,若不为空,访问队首结点(保存或打印),然后将队首结点出队,接着判断其左右子节点是...

2019-08-20 15:42:17

【三角形最大路径和】递归、记忆化搜索、深度搜索(DFS打印所有路径、最大路径)、动态规划(DP)对比

参考链接,请参考原文,博主按照该文章顺了一遍,并加上自己的理解而已下面所有的代码,如果不想提前新建nums[1000][1000],可以使用双重list动态存储题目描述有一个层数为n(n<=1000)的数字三角形。现有一只蚂蚁从顶层开始向下走,每走下一级,可向下或右下方向走。求走到底层后它所经过数字的总和的最大值。【输入格式】第一个整数为n,一下n行为各层的数字。【输出格式】一...

2019-08-19 17:45:44

【回溯法】:剑指offer12:矩阵中的路径

题目描述:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e 这样的3 X 4 矩阵中包含一条字符串”bcced”的路径,但是矩阵中不包含”abcb”路径,因为字...

2019-08-18 16:10:58

【动态规划】剑指offer14:剪绳子

题目描述:给你一根长度为n的绳子,请把绳子剪成m段 (m和n都是整数,n>1并且m>1)每段绳子的长度记为k[0],k[1],…,k[m].请问k[0]k[1]…*k[m]可能的最大乘积是多少?例如,当绳子的长度为8时,我们把它剪成长度分别为2,3,3的三段,此时得到的最大乘积是18.思想定义f(n)为把长度为n的绳子剪成若干段后各段长度乘积的最大值在剪第一刀的时候,我们有n...

2019-08-17 11:30:23

【递归-数组全排列】

仅以此博客记录学习,侵权即删。利用递归实现数组的全排列,个数为12***n参考链接import java.util.Arrays; public class permutation{//s表示,从array[start]后的数据进行全排列public static void permute(int[] array,int start){ if(start==array.leng...

2019-08-03 17:25:18

【猿辅导-笔试真题】大巴车(数组分块,按块翻转,块内不变)

该博客仅作为学习笔记,如侵权,请告知,速删。题目描述:某天 HR 组织大家去漂流,早上,参加团建的同学都到齐了,并且按到达公司的先后顺序排好队了。 由于员工太多,一个大巴车坐不下,需要分多个车,车是足够的,但所有人需要按一定顺序上车,按如下规则安排上车的顺序:假设大巴车容量为 m,从队首开始,每 m 个人分成一个小组,每个小组坐一辆车。同时只有一个车打开车门供员工上车。 小组之间按从队尾到队...

2019-07-30 21:42:58

【java笔试】常见方法汇总

数组int[] nums = new int[5]int[] arrays = {1, 2, 3, 4, 5};nums.lengthscanner类的常用方法Scanner scan = new Scanner(System.in)scan.next()(默认是String类型,一个一个读取,遇到空格结束)scan.hasNext()scan.nextLine()(读取一整行,...

2019-07-29 11:10:19

【拼多多-笔试题】构造字符串

题目描述:有一个长度为n的字符串P,我们可以通过P构造出一个无限长度的字符串S,其中S[i]=P[i%n]。给定一个字符串S,求可以通过上述方法构造出S的最短字符串P。思想:遍历每一种可能的子串(子串长度由小到大)将子串重复多次进行拼接(取整和取余)判断和原字符串是否相等(存在就是最小的符合要求的子串)public class test1 { public static void...

2019-07-27 21:28:07

【拼多多-笔试真题】数组山谷

题目描述:数组里的山谷是指一个数组A中的连续子数组B满足以下条件:(1)B.length>=3;(2)存在满足:0<i<B.length-1并且B[0]>B[1]>…>B[i-1]>B[i]<B[i+1]<…<B[B.length-1];现给定一个整形数组A,找出数组A里的最长山谷B的长度,如果没有,则输出0.思想:分段统计...

2019-07-27 17:51:16

【拼多多-笔试真题】旋转字符串

题目描述:给定一个字符串,按顺时针顺序输出为一个正方形,具体规则如下:1、从上边开始,上边从左到右2、然后到右边,右边从上到下3、然后是下边,下边从右到左4、最后是左边,左边从下到上输入描述:输入一行,包含4k(k为整数,1<= k <= 10)个小写字母输出描述:输出k+1行,按照上面规则输出正方形,正方形内部用空格填充实例一:输入:abcdefghijklm...

2019-07-27 15:51:45

【数组-3】leetcode27:移除元素(Remove Element)

题目描述、参考链接题目描述:给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, ...

2019-07-26 17:20:48

【数组-2】leetcode26:删除排序数组中的重复项(Remove Duplicates from Sorted Array)

题目描述、参考链接题目描述:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元...

2019-07-26 16:58:02

【数组-1】leetcode1:两数之和(Two Sum)

题目描述、参考链接题目描述:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [...

2019-07-26 16:34:30

【面试笔试真题】二维数组环形打印的实现

题目描述:对二维数组实现环形打印(具体效果见下面)1 2 3 412 13 14 511 16 15 610 9 8 7思想:环形打印上横(左到右,改变列)右纵(上到下,改变行)下横(右到左,改变列)左纵(下到上,改变行)PS:这里直接新建了一个数组,如果是给定数组,打印对应的数字即可(count对应原数组下标)public class test1 { publ...

2019-07-25 22:21:31

【字符串-7】leetcode28:实现strStr()(Implement strStr())

题目描述、参考链接题目描述:实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = “hello”, needle = “ll”输出: 2示例 2:输入: haystack = “aaaa...

2019-07-25 21:09:40

【字符串-6】leetcode22:括号生成(Generate Parentheses)

题目描述、参考链接题目描述:给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]思想:这种列出所有情况的考虑使用递归,由于只有左右字符串,所以最终生成的串必定n个左n个右括号定义left和right表示...

2019-07-25 16:21:05

【字符串-5】leetcode20:有效的括号(Valid Parentheses)

题目描述、参考链接题目描述:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true思想:利用栈的特性,遍历字符串,遇到左...

2019-07-25 10:30:32

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。