算法
it00zyq
IT菜鸟
展开
-
研究生算法课程笔记
算法课程算法题目总结原创 2022-11-19 10:22:32 · 1075 阅读 · 2 评论 -
LeetCode热题100道
文章目录1、两数之和2、两数相加3、无重复字符的最长子串1、两数之和通往【LeetCode - 两数之和】的任意门解法一:暴力解采用两层for循环,第一次层循环选取第一个数,第二次循环选取第二个数,第二层循环找到符合的数则直接返回结果。时间复杂度:O(n^2)空间复杂度:O(1)vector<int> twoSum(vector<int>& nums, int target) { vector<int> res;原创 2022-02-11 18:21:26 · 5340 阅读 · 0 评论 -
剑指Offer:找出数组中重复的数字(一)
题目描述在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 3, 4, 5, 2]输出:3 或 2限制:2 <= n <= 100000来源:力扣Leetcode三种解题方法public class 数组中重复的数字 { /** * 解法1:利用HashSet去重的特性 * 空间复原创 2021-05-25 18:14:38 · 129 阅读 · 0 评论 -
归并排序及其扩展算法题
归并排序代码/** * @author IT00ZYQ * @date 2021/4/22 21:40 **/public class 归并排序及扩展 { /** * 递归 归并排序 * @param nums */ public static void mergeSort(int[] nums) { mergeSort(nums, 0, nums.length - 1); } /** * 把[l, r]原创 2021-04-24 10:51:52 · 98 阅读 · 0 评论 -
利用Master公式求递归算法的时间复杂度
Master公式T(n) = aT(n/b) + O(n^d)参数含义:Master只适用于子问题规模相同的递归算法a表示被划分成a个相同规模的子问题b表示每个子问题处理的数据规模O(n^d)表示合并子问题解所要花费的时间复杂度复杂度的计算:①当d<logb a时,时间复杂度为O(n^(logb a))②当d=logb a时,时间复杂度为O((n^d)*logn)③当d>logb a时,时间复杂度为O(n^d)...原创 2021-04-22 20:08:21 · 285 阅读 · 0 评论 -
经典动态规划:最长公共子序列
问题给定两个字符,求两个字符串的最长公共子序列(不需要连续,只需要保持字符的相对位置)动态规划详解题解/** * @author IT00ZYQ * @date 2021/4/10 22:57 **/public class 最长公共子序列 { public static int way1(String str1, String str2) { if (str1 == null || str2 == null || str1.length() == 0 ||原创 2021-04-10 23:16:01 · 93 阅读 · 0 评论 -
拼贴纸问题
问题描述给定一个字符串str,给定一个字符串数组arr;arr里的每一个字符串代表一张贴纸,可以把单个字符剪开使用,目的是拼出字符串str,求至少需要多少张贴纸可以拼出字符串str。例:str = "babac",arr = {"ba", "c", "abcd"}至少需要两张贴纸,分别是“ba”和“abcd”,使用这两张贴纸,把每个字符单独剪开,有2个a,2个b,1个c,可以拼出babac,所以结果是2。题解/** * @author IT00ZYQ * @date 2021/4/10原创 2021-04-10 22:29:59 · 294 阅读 · 0 评论 -
拿纸牌
问题描述给定一个整型数组arr,代表数组不同的纸牌,玩家A和B依次拿走一张纸牌,规定玩家A先拿,玩家B后拿,但每次玩家只能拿走最左边或者最右边的纸牌,玩家A和B都会根据最优方案拿牌,返回最后获胜者的分数。三种解决方法/** * @author IT00ZYQ * @Date 2021/4/9 12:06 **/public class 拿纸牌 { /** * 暴力法 * @param arr * @return */ pub原创 2021-04-09 16:24:36 · 161 阅读 · 0 评论 -
算法题做题笔记
/** * @author IT00ZYQ * @Date 2021/4/9 9:48 **/public class Test { /** * 打印32位整型n的二进制表示 * @param n */ public static void printByte(int n) { System.out.print("整数n的二进制表示:"); for (int i = 31; i >= 0; i--) {原创 2021-04-09 09:58:01 · 89 阅读 · 0 评论 -
阿里笔试题:机器人走K步到达M点问题
问题描述假设有排成一行的N个位置,记为1~N,N一定大于或等于2;开始时机器人在M(1 <= M <= N)位置上,如果机器人位于1位置,那么下一步只能走到2位置,如果机器人位于N位置,那么下一步只能走到N-1位置,如果机器人位于中间的任一位子,那么下一步可以向左走,也可以向右走。机器人必须走K步,最终来到P(1 <= P <= N),给定参数N,M,K,P,有多少种走法?三种解题方法/** * 假设有排成一行的N个位置,记为1~N,N一定大于或等于2; * 开原创 2021-04-09 00:43:58 · 391 阅读 · 1 评论 -
经典N皇后问题
N皇后问题n 皇后问题:如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击(不在同一行,同一列,同一对角线上)。给定一个整数 n ,返回有多少种摆放方法。两种解法/** * @author IT00ZYQ * @Date 2021/4/8 21:50 **/public class N皇后 { /** * 暴力递归法 * @param n * @return */ public static int wa原创 2021-04-08 22:41:47 · 285 阅读 · 0 评论
分享