算法与数据结构
Alex_Fly
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
百题挑战计划—第5题—LC#160相交链表(Intersection of Two Linked Lists - E)
**问题描述:**编写一个程序,找到两个单链表相交的起始节点,若有交点则返回第一个相交点,若无交点,则返回null思路:1.哈希表法,遍历链表A,将所有元素放入HashSet中,遍历链表B,若有重复元素则返回,若没有则返回null。2.双指针法,在LinkedList A,B中分别设置两个指针pA,pB,分别遍历自己的链表,若遍历完所在链表,则遍历另一个链表,直至最终相遇;若未相遇,则返回n...原创 2020-04-30 15:50:31 · 443 阅读 · 0 评论 -
百题挑战计划—第4题—匹配字典中的最长单词LEETCODE_524(Longest Word in Dictionary through Delecting - M)
题目描述: 事先给定一个字符串 s 和 一个字符串集合 list,判断 list 中的字符串是不是 s 通过删除字符得到的子字符串, 若有多个子字符串,则选取最长的一个。 若有相同长度的,则取字典序最优先的。(在ASCII码中排的前)思路:简化问题,把【字符串与字符串集合作比较】简化为【该字符串是不是s的子字符串】,这一步可以通过另写一个方法 isSubString(String s,...原创 2020-04-25 10:24:59 · 451 阅读 · 0 评论 -
百题挑战计划-第3题-环形链表LEETCODE_141(Linked List Cycle - E)
题目简述:判断一个链表是否有环,若无环,lastNode.next == null ,若有环,则会一直循环下去思路1:双指针法,定义【快、慢】两个指针,慢指针每次走一步,快指针每次走两步,若有环,则两者总会相遇,若快指针走到最后为空,则说明没有环,由于快指针比慢指针每次走路快一步,所以不会错过思路2:哈希表,实例化一个哈希表,若哈希表中没有这个数,则添加,若有,则返回true,若为空则返回fa...原创 2020-04-17 16:41:20 · 214 阅读 · 0 评论 -
百题挑战计划-第二题-合并两个有序数组LEETCODE_88(Merge Sorted Array - E)
思路 1:可提前判断 2的最大值是否小于等于 1的最小值,因为 nums1 有足够放下 nums2的空间,所以可以直接将 nums2 放到 nums1 的后面,再将 nums1 重新排序思路 2:首先将 nums2[0] 从 nums1[m-1] 向前进行比较,直到找到合适的位置 k,将 nums2[1] 从 nums1[k+1] 向后比较,直至nums2[]所有比较完毕思路 3:大神思路,可...原创 2020-04-11 17:47:50 · 245 阅读 · 0 评论 -
百题挑战计划-第一题(LEETCODE_680(Valid Palindrome II - E))
思路:定义两个指针i,j,从字符串的左右两侧开始起跑,相等就继续,不相等就停下,继续判断 (i+1 == j || j-1 == i),这时发现产生了递归现象,于是可以将该判断步骤独立成一个递归函数又因为题干要求 “最多移除一个字符” ,所以这里引入一个计数器count函数可写为 validPalindrome(String s,int i,int j,int count)/** * 百题挑战...原创 2020-04-11 17:34:48 · 232 阅读 · 0 评论 -
LeetCode633-平方数之和
标题写这道题出现了一个我对于 if/else 的盲点以前我是这样写的if () {}if () {}else {}结果发现正确的应该是这样if () {}else if () {}else {}问题描述思路...原创 2020-03-18 16:24:04 · 208 阅读 · 0 评论 -
手写整理——冒泡排序
// 第一次面试遇到这么简单的问题,可惜自己没有把握住机会,还是要多手撕代码,加油加油!思路分析:冒泡排序算是排序中最简单的,整个代码不超过30行。由于冒泡排序的规则就是前后两个数字比大小,小的转移到前面,大的放到后面,所以假设数组中第一个是最大的数字,最后一个是最小的数字,由于每轮比较只能移动一位,所以需要比较 (len - 1)轮。所以这里引入一个指针 i 。在每一轮中,每个数都要与它...原创 2020-03-17 11:58:18 · 380 阅读 · 0 评论
分享