
算法和数据结构
算法和数据结构
fogy丶
努力不一定会成功,但不努力一定不会成功。你的负担将变成礼物,你受的苦将照亮你的路。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Leetcode-167. 两数之和 II - 输入有序数组
167. 两数之和 II - 输入有序数组方法一:暴力破解方法二:二分查找方法三:双指针 Leetcode-167. 两数之和 II - 输入有序数组 链接:https://leetcode-cn.com/problems/two-sum-ii-input-array-is-sorted/ 方法一:暴力破解 时间时间复杂度:O(n^2) class Solution { public int[] twoSum(int[] numbers, int target) { int a[原创 2020-07-20 09:48:45 · 229 阅读 · 0 评论 -
Leetcode-120. 三角形最小路径和(动态规划)
120. 三角形最小路径和(动态规划)方法一:自顶向下方法二:自底向上 方法一:自顶向下 第一次靠自己做出了动态规划的题,有点小开心!! 于此记录一下第一次自主做出动态规划,就是可惜第一次多加了个Math.max没有一次pass class Solution { public int minimumTotal(List<List<Integer>> triangle) { int lenX=triangle.get(triangle.size()-1)原创 2020-07-14 10:52:02 · 204 阅读 · 0 评论 -
Leetcode-面试题 17.10. 主要元素(摩尔投票法)
面试题 17.10. 主要元素 (摩尔投票法)方法一:Map方法(不满足题目空间复杂度)方法二:摩尔投票法 面试题 17.10. 主要元素 题目链接:https://leetcode-cn.com/problems/find-majority-element-lcci/ 方法一:Map方法(不满足题目空间复杂度) class Solution { public int majorityElement(int[] nums) { Map<Integer,Integer> map=原创 2020-07-02 14:31:31 · 267 阅读 · 0 评论 -
Leetcode-面试题64. 求1+2+…+n
面试题64. 求1+2+…+n Leetcode-面试题64. 求1+2+…+n 链接:https://leetcode-cn.com/problems/qiu-12n-lcof/ class Solution { int res=0; public int sumNums(int n) { boolean x=n>1&&sumNums(n-1)>0; res+=n; return res; } }原创 2020-06-02 10:54:55 · 267 阅读 · 0 评论 -
Leetcode-1431. 拥有最多糖果的孩子(枚举法)
1431. 拥有最多糖果的孩子(简单暴力破解)方法1方法2(优化后) 拥有最多糖果的孩子(简单暴力破解) 链接:https://leetcode-cn.com/problems/kids-with-the-greatest-number-of-candies/ 方法1 class Solution { public List<Boolean> kidsWithCandies(int[] candies, int extraCandies) { List<Bo原创 2020-06-01 10:07:25 · 196 阅读 · 0 评论 -
Leetcode-76. 最小覆盖子串(滑动窗口)
76. 最小覆盖子串(滑动窗口) 最小覆盖子串(滑动窗口) 链接:https://leetcode-cn.com/problems/minimum-window-substring/ class Solution { public String minWindow(String s, String t) { Map<Character, Integer> map = new HashMap<>(); //遍历字符串 t,初始化每个字母的次数原创 2020-05-23 22:09:03 · 285 阅读 · 0 评论 -
Leetcode-136. 只出现一次的数字(位异或)
136. 只出现一次的数字 只出现一次的数字 题目链接:https://leetcode-cn.com/problems/single-number/ class Solution { public int singleNumber(int[] nums) { int ans=0; for(int i=0;i<nums.length;i++){ ans^=nums[i]; //异或运算 }原创 2020-05-23 22:06:51 · 170 阅读 · 0 评论 -
时间和空间复杂度理解(2)
时间和空间复杂度 (2) 时空复杂度概述O(1)解析O(n)解析O(n^2) 解析O(log n)解析O(n log n)解析 时空复杂度概述 首先o(1), o(n), o(logn), o(nlogn)是用来表示对应算法的时间复杂度,这是算法的时间复杂度的表示。不仅仅用于表示时间复杂度,也用于表示空间复杂度。 算法复杂度分为时间复杂度和空间复杂度。其作用: 时间复杂度是指执行这个算法所需要的计算工作量; 空间复杂度是指执行这个算法所需要的内存空间;转载 2020-05-24 10:50:38 · 167 阅读 · 0 评论 -
Map-map.getOrDefault()用法
Map-map.getOrDefault()用法前言API展示我的理解用途总结: 前言 我之所以会认识到它,是因为在做一道leetcode题的时候发现如果想在每个数据上进行累加我必须先给每个key赋初值才行 (如果不赋初值在计算一开始就会报空指针异常) ,但这显得十分麻烦代码看起来十分冗余并让程序执行效率降低,于是后来在看了其他人的题解过程中无意发现了这个方法,经过查阅后发现map可以直接赋初值并计算。也就是该文所要讲述的map.getOrDefault(). API展示 我的理解 Map.getOr原创 2020-05-23 21:54:35 · 4678 阅读 · 0 评论 -
Java-为什么遍历输出HashSet是有序的?
Java遍历HashSet为什么输出是有序的?*Java集合中有序无序的概念一、问题起因二、过程三、总结 *Java集合中有序无序的概念 首先先了解清楚Java集合中有序无序的概念, 有助于更好的理解HashSet为什么输出是有序的!! 有序、无序是指在进行插入操作时,插入位置的顺序性 先插的位置在前,后插的位置在后,则为有序,反之无序 而大家容易混淆的就是排序,排序是指集合内的元素是否按照升序或...原创 2019-10-07 17:31:39 · 3374 阅读 · 4 评论 -
Java-List、Set、Map的特点及区别
List、Set、Map的特点及区别集合List 、Set、Map的区别与联系一、结构特点二、相关的实现类1.List的接口有三个实现类。2.1.1 ArrayList2.1.2 LinkedList2.1.3 Vector2.Set接口有三个实现类2.2.1 HashSet2.2.2 TreeSet2.2.3 LinkedHashSet3.Map接口有6个实现类。2.3.1 HashMap2.3.2 LinkedHashMap2.3.3 TreeMap2.3.4 WeakHashMap2.3.5 Conc原创 2020-05-17 16:36:58 · 1709 阅读 · 0 评论 -
Java-异或运算
Java-异或运算异或运算法则异或的运算方法是一个二进制运算:例图:总结例题1例题2:136. 只出现一次的数字(力扣) 异或运算法则 1. a ^ b = b ^ a 2. a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c; 3. d = a ^ b ^ c 可以推出 a = d ^原创 2020-05-14 10:09:30 · 22383 阅读 · 0 评论 -
JAVA实现-快速排序
JAVA实现-快速排序 高快省的排序算法 有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。 假设我们现在对“6 1 2 7 9 3 4 5 ...原创 2020-04-13 22:01:21 · 762 阅读 · 0 评论 -
深度优先搜索(DFS)-入门学习
@[TOC](深度优先搜索(DFS)-入门学习) 深度优先搜索(DFS) 的基本思想:从图中的某个顶点v出发,然后依次从未被访问的 v 的邻接点开始深度优先搜索,直至图中所有和 v 路径相通的顶点都被访问,然后选择另外一个没有被访问的顶点开始深度优先搜索。 1. 概述 深度优先搜索(DFS) 的基本思想:从图中的某个顶点v出发,然后依次从未被访问的 v 的邻接点开始深度优先搜索,直至图中所有和...原创 2020-04-08 15:44:29 · 475 阅读 · 0 评论 -
动态规划-国王与金矿
动态规划-国王与金矿 图文有点长,慢慢看 ———————————— 题目: 有一座高度是10级台阶的楼梯,从下往上走,每跨一步只能向上1级或者2级台阶。要求用程序来求出一共有多少种走法。 比如,每次走1级台阶,一共走10步,这是其中一种走法。我们可以简写成 1,1,1,1,1,1,1,1,1,1。 再比如,每次走2级台阶,一共走5步,这是另一种走法。我们可以简写成 2,2,2,2...转载 2020-04-06 11:56:29 · 465 阅读 · 0 评论 -
Java-全排列
全排列之JAVA讲解-实现蓝桥杯考题凑算式全排列的基本思想是:例蓝桥杯第七届省赛第三题 全排列的基本思想是: 把待全排列记录分为两个部分: (1) 第一个记录 (2) 剩下的所有元素 所有记录的全排列就是所有可能出现在第一个位置的记录与剩下所有元素的全排列。 以[1,2,3]为例, 1,2,3的全排列可以看作是 1,[2,3的全排列] ...原创 2020-03-11 16:22:16 · 260 阅读 · 0 评论 -
时间和空间复杂度理解 (1)
时间复杂度的理解前言定义(1)时间频度(2)时间复杂度(3)最坏时间复杂度和平均时间复杂度最坏时间复杂度和平均时间复杂度(1)最坏时间复杂度(2)平均时间复杂度尾:求时间复杂度综上: 前言 算法复杂度分为时间复杂度和空间复杂度。其作用:时间复杂度是指执行这个算法所需要的计算工作量(执行时间);而空间复杂度是指执行这个算法所需要的内存空间。时间和空间(即寄存器)都是计算机资源的重要体现,而算法的复...原创 2020-02-20 19:41:40 · 393 阅读 · 0 评论