算法
文章平均质量分 54
pmdream
每天进步一点点,如果没有学习那就是倒退
展开
-
[算法]字符串一些题随笔
前言字符串也是高频考题还是得多刷刷的注意使用数学函数 Math.min(a,b);newString(arr)来返回一个字符串,把数组进行返回;1.541. 反转字符串 II(Easy)每日一题,其实就是做一下反转...原创 2021-08-20 10:57:02 · 95 阅读 · 0 评论 -
[算法]数组类型算法随笔
todo原创 2021-08-19 01:40:42 · 87 阅读 · 0 评论 -
[算法]数据结构-二叉树的先序,中序,后续,层次遍历
前言在刷剑指offer树的题,还挺吃力的。先把这几种遍历写一遍!注意单词:preorder 是先序, postorder是后续, 中序是inorder我的测试树:测试代码:// 构造二叉树,返回根节点public static TreeNode treeSet() { TreeNode root = new TreeNode(1); TreeNode a = new TreeNode(2); TreeNode b = new TreeNode(3.原创 2021-08-13 17:27:16 · 890 阅读 · 0 评论 -
[算法]算法专练—剑指offer链表
前言:剑指offer中的所有链表题都做一遍。0812完成!明天要完成所有的tree原创 2021-08-12 17:19:33 · 96 阅读 · 0 评论 -
[算法]乐扣474. 一和零
这道题有点难啊,我很不喜欢动态规划。TODO转载 2021-06-08 01:30:31 · 330 阅读 · 0 评论 -
[算法]4的幂 || 2的幂
嗯,今天乐扣的简单题!不错~给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回true;否则,返回false。整数n是 4 的幂次方需满足:存在整数x使得n == 4x4x示例 1:输入:n = 16输出:true示例 2:输入:n = 5输出:false示例 3:输入:n = 1输出:true提示:-231<= n <= 231- 1...原创 2021-05-31 00:27:11 · 326 阅读 · 0 评论 -
[算法]交换数字,使用异或运算解题
2021-05-24 [交换数字]交换数字// 看到这个题不能用临时变量就知道一定是异或运算的题。编写一个函数,不用临时变量,直接交换numbers = [a, b]中a与b的值。示例:输入: numbers = [1,2]输出: [2,1]提示:numbers.length == 2-2147483647 <= numbers[i] <=2147483647异或运算: 参与运算的两个值,如果两个相应bit位相同,则结果为0,否则为1。 即: .原创 2021-05-24 23:47:04 · 155 阅读 · 0 评论 -
[算法]位运算实现加法
最近又被面到,在巩固一下。结合之前的:[算法]mask = k & (-k) ,二进制转10进制,还有位运算等同于:https://leetcode-cn.com/problems/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof/写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。因为异或运算,相当于无进位和,只有两个数字不一样才为1进位呢?进位相当于 与运算 + 左移一位。.原创 2020-08-05 16:55:25 · 518 阅读 · 0 评论 -
[算法]给定一个矩阵m*n,从左上角开始每次只能向右或者向下走,最后到右下角的位置共有多少种路径
很经典的一道题等同于:https://leetcode-cn.com/problems/unique-paths/在完美世界面试中遇到了。每次都只能向右或者向下走,求出所有种情况。当时想到的思路是这样的。dp[m][n]=dp[m-1][n]+dp[m][n-1]表示走到(m,n)位置的走法给的题干是:class Solution { public int uniquePaths(int m, int n) { }}这道题求有多少种路径?那么理应当想到动转载 2020-08-05 15:50:11 · 11196 阅读 · 0 评论 -
[算法]粉笔公考java算法--合并区间和最大连续子数组
合并区间题目来源:https://leetcode-cn.com/problems/merge-intervals/ /** * 输入: [[1,3],[2,6],[8,10],[15,18]] * 输出: [[1,6],[8,10],[15,18]] * 解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6]. * 必须做的事情 * */ public int[][] merge(int[][] interva.原创 2020-07-15 17:36:55 · 343 阅读 · 0 评论 -
[算法]剑指offer-easy的题解题思路
1.剑指 Offer 53 - II. 0~n-1中缺失的数字一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/que-shi-de-shu-zi-lcof有顺序数组,应该找到关系使用二分查找class Solution { public int missingNu原创 2020-07-13 16:15:58 · 294 阅读 · 0 评论 -
[算法]写算法时候需要记住的小技巧
1. 对于字符串可以使用toArray()2. 字符串相加中: public String addStrings(String num1, String num2) { StringBuilder res = new StringBuilder(""); int i = num1.length() - 1, j = num2.length() - 1, carry = 0; while(i >= 0 || j >= 0){原创 2020-07-10 16:58:14 · 378 阅读 · 0 评论 -
[算法]2sum,3sum,4sum,ksum
1. 两数之和给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/two-sumclass Solution { public int[] twoSum(int[] nums, int target) { ...原创 2020-07-10 11:48:57 · 200 阅读 · 0 评论 -
[算法]链表,只给定了一个中间结点,请删除这个中间结点
网易传易java面试算法:对应了leetcode:https://leetcode-cn.com/problems/delete-middle-node-lcci/实现一种算法,删除单向链表中间的某个节点(即不是第一个或最后一个节点),假定你只能访问该节点。/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * List原创 2020-07-07 20:40:03 · 164 阅读 · 0 评论 -
[算法]全排列
因为YY 也就是欢聚时代题库中有这道题,所以拿出来分析一下。个人还是挺头疼数学类型的。给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/permutations经典的回溯问题,预备知识回溯法 ...原创 2020-07-05 18:55:50 · 235 阅读 · 0 评论 -
[算法]mask = k & (-k) ,二进制转10进制,还有位运算
1.mask = k & (-k)https://blog.csdn.net/pmdream/article/details/107066488主要针对这个算法。 int k = 0; for(int num: nums) { k ^= num; } //获得k中最低位的1 int mask = 1; //mask = k & ...原创 2020-07-01 17:55:42 · 1126 阅读 · 0 评论 -
[算法]leetcode 剑指offer数组中数字出现的次数
前言:里面提到了异或运算:异或运算是什么,我真是不怎么知道。在这里补一下。异或,英文为exclusive OR,缩写成xor它应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为:a⊕b = (¬a ∧ b) ∨ (a ∧¬b)如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0让我们先来考虑一个比较简单的问题:如果除了一个数字以外,其他数字都出现了两次,那么如何找到出.原创 2020-07-01 17:20:22 · 279 阅读 · 0 评论 -
for循环中为什么用 ++i 比 i++ 更好 ?
Answer:++i 比 i++ 占用内存少一、撰写目的因为在leetcode刷算法的时候,发现++i再循环中这样写。所以还是严谨一点吧二、原理相比而言,i++ 要在内存中多创建一个临时变量,多执行一步占用内存更高。具体原理如下://++i执行过程i = i + 1;return i;//i++执行过程int t = i; //创建了临时变量,增加了内存i = i + 1;return t;转载:https://blog.csdn.net/i...转载 2020-06-12 18:05:00 · 1868 阅读 · 0 评论 -
算法:先序遍历和中序遍历得到一个二叉树(java实现)
java实现:package leetcode;import java.util.ArrayList;public class TreeBuild { public static ArrayList list = new ArrayList(); public static TreeNode reConstructBinaryTree(int[] pre, int...转载 2019-03-27 17:31:12 · 527 阅读 · 0 评论 -
算法:二分查找和衍化的问题
问题:(YFD的问题)如果是给定一个数组,有排序的数组,数组有序递增,如:1,2,2,3,3,3,4,5,9,10,11,11,12选出第一个大于等于a的数此问题应该借助二分查找,虽然有O(n)的解法,直接进行一边循环比对但是二分查找的复杂度是O(log2n)二分查找的特点:折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。所以给出这种问题,第一个想...原创 2019-03-25 00:37:13 · 270 阅读 · 0 评论