算法
珍心
诚心学习,非诚勿扰
展开
-
【算法】两个大数(数组)求和
学而不思则罔,思而不学则殆@TOC题目输入:A = “999999” 和 B = “1”返回:result = “1000000”思路主要是解决整型溢出的大数运算,主要思路:从最低位开始求和,本位等于求和的余数,进位提供给下一位求和使用。【默认进位为0】Demo static char[] sum(char[] A, char[] B) { int flag = 0; //1.计算数组的长度为最大的值 int max = Math原创 2020-12-18 08:33:56 · 1038 阅读 · 0 评论 -
【每日算法】最长递增子序列
学而不思则罔,思而不学则殆【每日算法】最长递增子序列题目解法1 排序+最长公共子序列法LCS解法2 动态规划法(时间复杂度O(N^2))参考题目题目:一个数组的最长递增子序列的个数比如:数组[4, 9, 9, 19, 17, 12, 19, 5, 3, 5]最长递增子序列是[4,9,12,19],长度为4解法1 排序+最长公共子序列法LCS其中排序最快的时间复杂度为O(logn)O(logn)O(logn)LCS的时间复杂度为O(n2)O(n^2)O(n2)所以整体时间负责度为O(n原创 2020-11-11 08:25:19 · 394 阅读 · 1 评论 -
【每日算法】最长公共子序列LCS
学而不思则罔,思而不学则殆【每日算法】最长公共子序列题目基本概念算法思路图解计算LCS初始化题目两个数组的,两个数组中都包含的最长序列最长公共子序列,全称Longest Common Subsequence,简称LCS基本概念这里需要了解一下子序列和字=子串的概念。类别相同点不同点子序列元素保持跟父序列一致元素可以不连续子串元素保持跟父序列一致元素必须连续可以说子串一定是子序列,但是子序列不一定是子串。如图,更加形象一点:算法思路该问题我原创 2020-11-10 08:49:43 · 199 阅读 · 0 评论 -
【数据结构】二叉树构造《LintCode072和LintCode073》
学而不思则罔,思而不学则殆【数据结构】二叉树构造《LintCode072和LintCode073》整理思路LitCode073算法结果算法实现LintCode072算法结果算法实现整理思路通过前序或者后序便找到根节点,找到根节点后在中序遍历数组中根据根节点把数组划分为两个数组,分别是左子树的中序遍历结果,另一个是右子树的中序遍历结果。依次类推,可以构造一颗二叉树。LitCode073https://www.lintcode.com/problem/construct-binary-tree-fr原创 2020-11-01 11:06:23 · 954 阅读 · 2 评论 -
【算法】【数组】【LintCode114】-不同的路径
学而不思则罔,思而不学则殆【算法】【数组】【LintCode114】-不同的路径题目算法一 - 递归算法二 - 动态规划题目描述有一个机器人的位于一个 m × n 个网格左上角。机器人每一时刻只能向下或者向右移动一步。机器人试图达到网格的右下角。问有多少条不同的路径?n和m均不超过100且答案保证在32位整数可表示范围内。Example 1:Input: n = 1, m = 3Output: 1 Explanation: Only one path to target原创 2020-09-22 08:25:40 · 175 阅读 · 0 评论 -
【算法】【数组】删除数组中所有值为x的数据元素
学而不思则罔,思而不学则殆【算法】【数组】删除数组中所有值为x的数据元素题目算法一算法二算法三题目删除数组中所有值为x的数据元素算法一思路:统计不等于x的个数时间复杂度:O(n)O(n)O(n)空间复杂度:O(1)O(1)O(1) //算法一:统计不等于x的个数 private static void del_x_1(int[] ints, int delete) { int k = 0; for (int anInt : ints) {原创 2020-09-20 22:42:08 · 5731 阅读 · 0 评论 -
【算法】【数组】替换空格
学而不思则罔,思而不学则殆【算法】【数组】替换空格题目算法测试题目题目:实现一个算法,把字符串中的每个空格替换成“%20”例如:We are happy.则输出:We%20are%20happy.算法思路:双指针,从后往前一个空格符替换成成"%20",因此数组长度增减为空格符的个数*2时间复杂度:O(n)O(n)O(n) //思路:双指针,从后往前 static String replace(char[] chars) { //计算空格数量原创 2020-09-20 21:47:55 · 158 阅读 · 0 评论 -
【算法】【数组】删除数组中偶数下标的元素,返回奇数下标的元素
学而不思则罔,思而不学则殆【算法】删除数组中偶数下标的元素,返回奇数下标的元素题目解法一解法二解法三 - 双指针法三种算法效率比较题目删除ArratList中索引为偶数的节点输入:[1,2,3]输出:[2]void removeItemsWithEvenIndex(ArrayList<Integer> list) {}注意:list既是输入,也是输出解法一思路:通过iterator迭代删除时间复杂度:O(n2)O(n^2)O(n2)空间复杂度:O(1)O(1)原创 2020-09-19 22:22:55 · 3794 阅读 · 0 评论 -
【算法】斐波那契数列
学而不思则罔,思而不学则殆【算法】斐波那契数列斐波那契数列公式递归一递归二非递归 - 动态规划三种算法对比斐波那契数列公式公式如下:F(n)={1n=0,1F(n−1)+F(n−2)n>2F(n)=\begin{cases}1 & \text{n=0,1}\\F(n-1) + F(n-2) & \text{n>2}\\\end{cases}F(n)={1F(n−1)+F(n−2)n=0,1n>2这种很容易有两种解法:递归和非递归递归一 p原创 2020-09-17 08:23:18 · 600 阅读 · 0 评论 -
【剑指offer】最长不含重复字符的子字符串
【算法】最长不含重复字符的子字符串题目学而不思则罔,思而不学则殆题目请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。假设字符串中只包含’a’-'z’的字符。例如:在字符串“arabcacfr”中,最长的不重复字符的子字符串是“acfr”,长度为4....原创 2020-09-11 08:13:55 · 515 阅读 · 0 评论 -
三个线程循环打印ABC..XYZ
三个线程循环打印1A2B3C..3X1Y2Z第一种实现第二种实现学而不思则罔,思而不学则殆这个主要考虑的是线程同步第一种实现使用关键字synchronized public static void main(String[] args) { int[] values = new int[]{'A', 1}; new Thread(new DiyRunnable1(values, 1)).start(); new Thread(new DiyRu原创 2020-08-18 21:42:19 · 387 阅读 · 0 评论 -
LintCode103 - 链表是否为环
LintCode103题目解析代码学而不思则罔,思而不学则殆题目描述给定一个链表,如果链表中存在环,则返回到链表中环的起始节点,如果没有环,返回null。样例样例 1:输入:null,no cycle输出:no cycle解释:链表为空,所以没有环存在。样例 2:输入:-21->10->4->5,tail connects to node index 1输出:10解释:最后一个节点5指向下标为1的节点,也就是10,所以环的入口为10。解析这道算法题原创 2020-07-21 21:58:19 · 252 阅读 · 0 评论