数据结构与算法 关于数据结构与算法:每日leetcodeJZ51-数组中的逆序对 题目在数组中的两个数字,如果后面一个数字大于前面的数字,则这两个数字组成一个逆序对。输出一个数组,求出这个数组中的逆序对的总数。要求:空间复杂度 O(n),工夫复杂度 O(nlogn) {代码…} 思路最简略的思路是暴力求解,遍历数组每个元素,而后挨个和之后的元素比拟。这种做法工夫复杂度是O(n^2)。最优思路是,利用…
数据结构与算法 关于数据结构与算法:二叉树和堆 二叉树:就是最多只能有两个叉的树结构。图中1是一般的二叉树,2、3是两种非凡的二叉树。2是满二叉树满二叉树:叶子节点全都在最底层,除了叶子节点之外,每个节点都有左右两个子节点
数据结构与算法 关于数据结构与算法:每日leetcodeJZ40-最小的K个数 给定一个长度为 n 的可能有反复值的数组,找出其中不去重的最小的 k 个数。例如数组元素是4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4(任意程序皆可)。
数据结构与算法 关于数据结构与算法:每日leetcodeJZ22-链表中倒数最后k个结点 最间接的思路是:翻转整个链表,而后再遍历节点,这样做就是空间复杂度O(n),工夫复杂度O(n)空间复杂度O(1),则不能存储额定的链表,意味着只能在原链表上操作。如果先遍历一遍链表,失去链表的长度,再减去k,失去倒数第k个节点是正序第几个节点,这样的做法工夫复杂度又不满足O(n)了。
数据结构与算法 关于数据结构与算法:每日leetcodeJZ6-从尾到头打印链表 第一反馈这不就是反转链表吗,但认真审题后,发现和翻转链表并不一样。题目要求的是,返回链表翻转后的每个节点的值。如果用翻转链表的思路,要先翻转链表,再遍历翻转链表的每个节点。这么做无论空间还是工夫复杂度都不够简洁。
数据结构与算法 关于数据结构与算法:每日leetcode328-奇偶链表 题目给定单链表的头节点 head ,将所有索引为奇数的节点和索引为偶数的节点别离组合在一起,而后返回从新排序的列表。第一个节点的索引被认为是 奇数 , 第二个节点的索引为 偶数 ,以此类推。请留神,偶数组和奇数组外部的绝对程序应该与输出时保持一致。你必须在 O(1) 的额定空间复杂度和 O(n) 的工夫复杂度下解决这个…
数据结构与算法 关于数据结构与算法:每日leetcode234-回文链表 第一个想到的就是,间接把整个链表翻转,而后和原来的链表比拟。然而题目要求工夫复杂度O(n),空间复杂度O(1),这个思路要保留翻转后的链表,空间复杂度首先就不满足了。
数据结构与算法 关于数据结构与算法:每日leetcode25-K-个一组翻转链表 题目给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最初残余的节点放弃原有程序。进阶:你能够设计一个只应用常数额定空间的算法来解决此问题吗?你不能只是单纯的扭转节点外部的值,而是须要理论进行节点替换。 {…
数据结构与算法 关于数据结构与算法:每日leetcode203-移除链表元素 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。
数据结构与算法 关于数据结构与算法:每日leetcode239-滑动窗口最大值 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧挪动到数组的最右侧。你只能够看到在滑动窗口内的 k 个数字。滑动窗口每次只向右挪动一位。