![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
进击的小绵羊
这个作者很懒,什么都没留下…
展开
-
得到目标数组的最少函数调用次数
题目描述:给你一个与 nums 大小相同且初始值全为 0 的数组 arr ,请你调用以上函数得到整数数组 nums 。请你返回将 arr 变成 nums 的最少函数调用次数。答案保证在 32 位有符号整数以内。示例 1:输入:nums = [1,5]输出:5解释:给第二个数加 1 :[0, 0] 变成 [0, 1] (1 次操作)。将所有数字乘以 2 :[0, 1] -> [0, 2] -> [0, 4] (2 次操作)。给两个数字都加 1 :[0, 4] -&原创 2020-08-23 19:23:57 · 248 阅读 · 0 评论 -
数据结构与算法常规操作(栈3)8——旋转数组的最小数字
问题描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。示例 1:输入:[3,4,5,1,2]输出:1示例 2:输入:[2,2,2,0,1]输出:0上代码:class Solution { public int minArray(int[] numbers) { int temp .原创 2020-07-22 09:48:47 · 160 阅读 · 0 评论 -
数据结构与算法常规操作(栈2)7——有效的括号
问题描述:给定一个只包括 '(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。注意:空字符串可被认为是有效字符串。class Solution { /** * Hash table that takes care of the mappings. */ private HashMap<Character, Character> mappings; /**.原创 2020-07-19 12:47:38 · 131 阅读 · 0 评论 -
数据结构与算法常规操作(栈1)6——最小栈
问题描述:设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) —— 将元素 x 推入栈中。 pop() —— 删除栈顶的元素。 top() —— 获取栈顶元素。 getMin() —— 检索栈中的最小元素。version 1.0代码:存在瑕疵,就是数组大小太大太小都会存在问题/** * 数组 */ private int[] items; /** * 栈大小 */ private in...原创 2020-07-18 12:03:31 · 174 阅读 · 0 评论 -
数据结构与算法常规操作5——求链表的中间结点
写链表代码技巧:技巧一:理解指针或引用的含义 技巧二:警惕指针丢失和内存泄漏 技巧三:利用哨兵简化实现难度 技巧四:重点留意边界条件处理 技巧五:举例画图,辅助思考 技巧六:多写多练,没有捷径问题描述:给定一个带有头结点head的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。方法:快慢指针复杂度分析: 时间复杂度:O(N)O(N)O(N),其中 NNN 是给定链表的结点数目。 空间复杂度:O(1)O(1)O(1),只需要常数空间存放...原创 2020-07-18 10:21:46 · 197 阅读 · 0 评论 -
数据结构与算法常规操作4——链表中环的检测
写链表代码技巧:技巧一:理解指针或引用的含义 技巧二:警惕指针丢失和内存泄漏 技巧三:利用哨兵简化实现难度 技巧四:重点留意边界条件处理 技巧五:举例画图,辅助思考 技巧六:多写多练,没有捷径问题描述:给定一个链表,判断链表中是否有环代码:public class HasCycle { /** * 给定一个链表,判断链表中是否有环 * @param head * @return */ public boolean hasCycle(ListNode head)原创 2020-07-18 09:31:56 · 154 阅读 · 0 评论 -
数据结构与算法常规操作3——反转一个单链表
写链表代码技巧:技巧一:理解指针或引用的含义 技巧二:警惕指针丢失和内存泄漏 技巧三:利用哨兵简化实现难度 技巧四:重点留意边界条件处理 技巧五:举例画图,辅助思考 技巧六:多写多练,没有捷径问题描述:反转一个单链表代码:class Solution { public ListNode reverseList(ListNode head) { ListNode reverse = null; while (head != null){ ListN原创 2020-07-18 08:58:37 · 102 阅读 · 0 评论 -
数据结构与算法常规操作2——删除链表的倒数第 n 个节点
问题描述:给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。(给定的 n保证是有效的。)思路: 倒序删除变正序删除,删除时注意链表长度为1和删除的是头结点情况(也可以使用快慢指针)实现代码:public class RemoveNthFromEnd { /** * 给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。 * 示例: * 给定一个链表: 1->2->3->4->5, 和 n = 2. * 当删除了倒数第二个节点后...原创 2020-07-17 17:23:28 · 124 阅读 · 0 评论 -
数据结构与算法常规操作1——合并有序链表
问题描述:将两个升序链表合并为一个新的升序链表并返回。 新链表是通过拼接给定的两个链表的所有节点组成的。public class MergeOrderedList { /** * 将两个升序链表合并为一个新的升序链表并返回。 * 新链表是通过拼接给定的两个链表的所有节点组成的。 * @param l1 有序链表1 * @param l2 有序链表2 * @return 返回合并后的有序链表 */ public ListNode mergeTwoLists(ListNode原创 2020-07-17 15:48:38 · 161 阅读 · 0 评论