
数据结构与算法
米斯特程序猿
爱生活,爱自己,爱家人,不抛弃,不放弃,敢冒险
展开
-
数据结构与算法-007-链表-环链检测
给你一个链表的头节点 head ,判断链表中是否有环。如果链表中存在环,则返回 true 。 否则,返回 false 。使用 HashSet 判断,简单办法 public boolean hasCycle(ListNode head) { // 空间法(不符合题意,题意要求O(1)空间复杂度) // 构建一个Set集,如果元素重复则说明有环 Set<ListNode> dd=new HashSet<>();原创 2021-11-25 18:17:33 · 295 阅读 · 0 评论 -
数据结构与算法-007-链表-两两交换链表中的节点
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。递归法 参考 public ListNode swapPairs(ListNode head) { // 递归终止条件 if(head==null || head.next==null){ return head; } // 当前节点的next节点做下一次递归的起始值(子集) ListNode newH原创 2021-11-25 15:13:15 · 229 阅读 · 0 评论 -
数据结构与算法-006-链表-反转单链表
反转链表,本题核心要点:搞明白如何做局部翻转,另外需要动手画图来操作加深理解空间法,来自题解评论区-触不可及// 该解法写的很简洁,空间、时间复杂度均为O(n),非最优解,用来学习还不错public ListNode reverseList(ListNode head) { ListNode ans = null; for (ListNode x = head; x != null; x = x.next) { ans = new ListNode(x.val原创 2021-11-22 22:58:28 · 568 阅读 · 0 评论 -
数据结构与算法-005-数组-三数之和
三数之和给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。题目来自Leetcode暴力解题public List<List<Integer>> threeSum(int[] nums) { // 暴力法,三遍循环,O(n^3),该方式在leetcode执行会超时 // 要求:返回结果不重原创 2021-11-22 21:47:53 · 307 阅读 · 0 评论 -
数据结构与算法-004-数组-爬楼梯
题目描述假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。题目来自leetcode暴力解法 // leetcode 上会执行超时,求30以内还可以,45就直接跪了 public int climbStairs(int n) { // 暴力法,时间复杂度为指数级,O(2^n),也可记做 O(k^n),k 为每一层展开数列,斐波那契每次展开2个数,所以记做O(2^n)原创 2021-11-16 16:20:32 · 929 阅读 · 0 评论 -
数据结构与算法-003-数组-移动零
题目描述给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。题目来自leetcode说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。暴力解法// 暴力法// 思路:两层循环数组,第二次判断值是否为零,如果是则与后面的一个元素交换// 时间复杂度: O(n^2)public void moveZeroes(int[] nums) { for(int i=0;i<nums.length;i++){ // 如原创 2021-11-15 23:36:54 · 128 阅读 · 0 评论