数据结构与算法
文章平均质量分 61
方言Mcx
温故而知新。技术不巩固练习便会荒废,以前学习所花的时间就白费了!
展开
-
【程序员面试系列】算法题练习-汇总(含华为OD机试题目)
做个4月算法刷题集合,方便复习巩固,欢迎交流探讨。【含华为OD机试面试题库】原创 2023-03-29 21:00:05 · 770 阅读 · 0 评论 -
Leetcode刷题系列(python/java)之35. 搜索插入位置(search-insert-position)
35. 搜索插入位置 search-insert-position题目理解解题思路解法一 常规法javapython解法二 二分法pythonjava题目理解题目链接解题思路常规法;二分法。解法一 常规法时间复杂度为O(n), 空间复杂度为O(1)。javaclass Solution { public int searchInsert(int[] nums, int target) { if (nums == null || nums.length == 0) /原创 2021-01-27 16:28:24 · 317 阅读 · 0 评论 -
Leetcode刷题系列(python/java)之27. 移除元素 remove-element
27. 移除元素 remove-element题目理解解题思路解法一javapython解法二javapython题目理解题目链接不使用额外的数组空间,仅使用 O(1) 额外空间;元素的顺序可以改变。解题思路解法一javapython解法二javapython...原创 2021-01-26 17:05:08 · 190 阅读 · 0 评论 -
程序员必备算法:递归
递归的特点有两个显著特征:终止条件和自身调用。自身调用:原问题可以分解为子问题,子问题和原问题的求解方法是一致的,即都是调用自身的同一个函数。终止条件:递归必须有一个终止的条件,即不能无限循环地调用本身。递归的解题思路三部曲,分别是:① 定义函数功能要知道解决的是什么问题。② 寻找递归终止条件即不能无限循环地调用本身。③ 递推函数的等价关系式。递归的本义是指,原问题可以拆为同类且更容易解决的子问题,即【原问题和子问题都可以用同一个函数关系表示。递推函数的等价关系式,这个步骤就等价于寻找原创 2021-01-24 15:29:10 · 283 阅读 · 2 评论 -
Leetcode刷题系列(python/java)之24. 两两交换链表中的节点(swap-nodes-in-pairs)
24. 两两交换链表中的节点 swap-nodes-in-pairs题目理解解题思路解法一 迭代法javapython解法二 递归法javapython题目理解题目链接解题思路做链表题目,经常用迭代和递归解法一 迭代法java/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * L原创 2021-01-24 14:46:14 · 275 阅读 · 1 评论 -
Leetcode刷题系列(python/java)之21. 合并两个有序链表 merge-two-sorted-lists
本系列为本人leetcode刷题之路2.0,将相关思考记录在此博客。欢迎批评指正。每个代码块都有需要注意的问题点总结。21. 合并两个有序链表 merge-two-sorted-lists题目理解解题思路解法一 迭代法pythonjava解法二 递归法pythonjava题目理解题目链接解题思路①迭代法②递归法递归和迭代经常互换。解法一 迭代法时间复杂度为O(n), 空间复杂度为O(n)python# Definition for singly-linked list.# cla.原创 2021-01-21 17:26:54 · 333 阅读 · 1 评论 -
Leetcode刷题系列(python/java)之20. 有效的括号 valid-parentheses
本系列为本人leetcode刷题之路2.0,将相关思考记录在此博客。欢迎批评指正。每个代码块都有需要注意的问题点总结。@TOC题目理解题目链接有效字符串需满足:左括号必须用相同类型的右括号、正确顺序闭合,并且一一配对,没有多余。注意空字符串可被认为是有效字符串。解题思路可以利用栈(FILO,即first-in-last-out)。先判断输入字符串是否为空,空的话返回ture(有效);接下来挨个遍历:如果输入是左括号,直接入栈;如果输入是右括号,判断是否有对应的左括号(先判断是.原创 2021-01-20 14:01:08 · 254 阅读 · 2 评论 -
Leetcode刷题系列(python/java)之3. 无重复字符的最长子串(未完)
3. 无重复字符的最长子串 longest-substring-without-repeating-characters题目理解解题思路解法1:pythonjava解法2:题目理解解题思路解法1:时间复杂度pythonjava解法2:时间复杂度原创 2021-01-19 12:43:14 · 107 阅读 · 0 评论 -
Leetcode刷题系列(python/java)之2. 两数相加 add-two-numbers
本文为本人leetcode刷题之路2.0,将相关思考记录在此博客。欢迎批评指正。目录2.题目理解解题思路解法1:pythonjava解法2:pythonjava解法3:pythonjava2.题目理解解题思路解法1:pythonjava解法2:pythonjava解法3:pythonjava...原创 2021-01-14 21:07:20 · 376 阅读 · 0 评论 -
Leetcode刷题系列(python/java)之1. 两数之和(two-sum)
本文为本人leetcode刷题之路2.0,将相关思考记录在此博客。欢迎批评指正。题目1.二级目录三级目录1.解题思路:①暴力解法(双指针)②hashmap(给面试官一定要最好给最优解)解法1:暴力解法(双指针法).时间复杂度O(n^2),空间复杂度O(1)pythonclass Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: # 解法1:暴力解法(双指针法) .原创 2021-01-13 14:59:08 · 343 阅读 · 0 评论 -
覃超数据结构(三)优先队列
优先队列理论讲解优先队列面试题703. 数据流中的第 K 大元素kth-largest-element-in-a-stream239. 滑动窗口最大值sliding-window-maximum理论讲解优先队列首先是队列,正常入、按照优先级出(这个属性是自己设置的)。实现机制:(一般面试会问,但不会让你写,所以了解背后机制即可,因为很多都已纳入标准库)堆Heap(Binary二叉树堆, Binomial多项式堆, Fibonacci斐波那契堆)二叉搜索树Binary Search Tree原创 2021-01-10 13:46:21 · 215 阅读 · 0 评论 -
覃超数据结构(二) 栈和队列
栈FILO,先入后出实现:数组和链表队列FIFO,先入先出应用:消息队列时间复杂度(如图)常见的复杂度(如图)leetcode。20.String大中小括号➡合法?①‘()’,合法②‘()【】’,合法③‘(【)】’,不合法④’]][[’, 不合法⑤’((([]))’,不合法用堆栈思考过程:a. 若是左括号(小中大)则push;b. 若是右括号,则查看peek是否为左,是的花pop;c. 当输入全部检查完成后,判断stack是否empty;...原创 2021-01-08 11:56:01 · 286 阅读 · 0 评论 -
覃超数据结构(一)
本节讲述数组&&链表的相关知识点和leetcode习题(3+2三道讲解两道练习)讲解习题分别为:206.反转链表reverse-linked-list;141.环形链表linked-list-cycle;24.两两交换链表中的结点swap-nodes-in-pairs;练习的题目分别为:142.环形链表Ⅱlinked-list-cycle-ii;25.k个一组翻转链表reverse-nodes-in-k-group。原创 2021-01-04 20:20:50 · 423 阅读 · 1 评论 -
Day5:数组指定位置插入一个元素,自己手动实现,不能调用API
原创 2020-07-05 23:55:45 · 124 阅读 · 0 评论