LintCode刷题
柚子味的快乐水
这个作者很懒,什么都没留下…
展开
-
链表插入排序lintcode173(Java实现)
先上代码: /** * Definition for ListNode * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */ public class Solution { /** * @param head: The first node原创 2020-10-25 09:42:45 · 146 阅读 · 0 评论 -
链表内指定区间反转java实现
对于单链表的反转是面试中常见高频题,如果会整体链表反转,局部链表反转也就很容易了(实现整体单链表反转) 下面为大家讲解思路(反转 第m个到第n个节点链表) 设 第m个节点的前一个结点为preM,第n个节点的后一个节点为nextN; public ListNode reverseBetween(ListNode head, int m, int n) { //将不符合规定的链表返回 if(head==null||head.next==null){原创 2020-09-10 21:34:01 · 1341 阅读 · 0 评论 -
链表中环的入口节点Java实现
题目:对于一个给定的链表,返回环的入口节点,如果没有环,返回null 其实题目很简单,这里需要用到两个结论,可以自己证明一下; 结论一:设置两个快慢指针,若两者相遇,则有环 结论二:两个节点分别从头节点和相遇点重新遍历,相遇点便是环的入口; 代码如下: public ListNode detectCycle(ListNode head) { //查找是否有环(设置两个快慢指针,若相遇,则一定有环,若遍历到最后,则没环) if(head==null){原创 2020-09-09 20:12:18 · 108 阅读 · 0 评论 -
重排链表java实现
算法题目: 将给定的单链表 L\ L L: L0→L1→…→Ln−1→LnL_0→L_1→…→L_{n-1}→L_ nL0→L1→…→Ln−1→Ln 重新排序为: L0→Ln→L1→Ln−1→L2→Ln−2→…L_0→L_n →L_1→L_{n-1}→L_2→L_{n-2}→…L0→Ln→L1→Ln−1→L2→Ln−2→… 要求使用原地算法,不能改变节点内部的值,需要对实际的节点进行交换。 例如: 对于给定的单链表{1,2,3,4},将其重新排序为{1,4,2,3}. 解决这道题只需要三原创 2020-09-09 19:08:47 · 501 阅读 · 0 评论 -
单链表反转java实现
对于面试时,链表的反转是高频题目。以下是我对链表反转的理解,采用的是原地反转,没有借助辅助链表。 具体操作如下:(举例说明) 第一步:初始化工作 将链表表头设置为node; 表头的下一个节点为cur; 设置一个新的节点用于储存cur的下一个节点,初始设为null;(虽然不是将node.next设置为7的下一个节点null,但是这样理解有助于解决局部单链表反转问题) 将node.next设置成null(这里是因为表头元素反转之后为链表末尾) 反转具体操作 将cur.next用next保存;next原创 2020-09-08 10:58:21 · 265 阅读 · 0 评论 -
LintCode 40用栈实现队列 Java实现
题目要求: 40. 用栈实现队列 正如标题所述,你需要使用两个栈来实现队列的一些操作。 队列应支持push(element),pop() 和 top(),其中pop是弹出队列中的第一个(最前面的)元素。 pop和top方法都应该返回第一个元素的值。 样例 例1: 输入: push(1) pop() push(2) push(3) top() pop() 输出: 1 2 2 这道题我还在《程序员代码面试指南》-IT名企算法与数据结构题目最优解中也看到了,这道题不难,只要熟悉栈和队列的原则即可写出。 栈:先进后原创 2020-07-06 12:00:05 · 126 阅读 · 0 评论 -
LintCode14.二分查找(binarySearch) Java实现
二分查找 给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1。 样例 样例 1: 输入:[1,4,4,5,7,7,8,9,9,10],1 输出: 0 没有出现过打印-1; 如果数组中没有重复元素,写出二分查找的代码很简单,如下 public int binarySearch(int[] nums, int target) { // write your co.原创 2020-07-04 10:21:12 · 129 阅读 · 0 评论 -
LintCode字符串查找(暴力匹配)java
先从简单的算法开始学吧 下面是领扣上刷到的一道字符串查找题(简单难度的)。 题目:对于一个给定的 source 字符串和一个 target 字符串,你应该在 source 字符串中找出 target 字符串出现的第一个位置(从0开始)。如果不存在,则返回 -1(可以不用KMP算法)。 对于刚接触算法的同学来说,确实简单的暴力匹配算法也可能有困难,那下面给大家简单的讲解一下思路 思路: 两个字符串转换成数组char1(source),char2(target); 两个指针(i,j),分别指向这两个数组的索引原创 2020-07-03 16:12:00 · 195 阅读 · 0 评论 -
领扣简单算法题--FizzBuzz问题
问题如下: 给你一个整数n. 从 1 到 n 按照下面的规则打印每个数: 如果这个数被3整除,打印fizz. 如果这个数被5整除,打印buzz. 如果这个数能同时被3和5整除,打印fizz buzz. 如果这个数既不能被 3 整除也不能被 5 整除,打印数字本身。 挑战 你是否可以只用一个 if 来实现 如果没有挑战,很容易想到解决思路 public List<String> fizzBuzz(int n) { // write your code here原创 2020-07-02 16:06:39 · 378 阅读 · 0 评论