剑指offer随练
合并两个排序的链表
题目描述
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
思路:使用递归的方法,合并头节点,然后对剩下的链表接着合并头节点,直到合并完毕。
或者可以使用非递归的方法,新建一个新的链表,然后依次对两链表的头节点进行比较,哪个小就放到新的链表中,而且该链表向后移动一位。
/*function ListNode(x){
this.val = x;
this.next = null;
}*/
//递归
function Merge(pHead1, pHead2)
{
if(pHead1==null){
return pHead2;
}
if(pHead2==null){
return pHead1;
}
if(pHead1.val<=pHead2.val){
pHead1.next = Merge(pHead1.next,pHead2);
return pHead1;
} else {
pHead2.next = Merge(pHead2.next,pHead1);
return pHead2;
}
}
//非递归
function Merge(pHead1, pHead2)
{
var a = new ListNode(1);
var b = a;
if(pHead1==null){
return pHead2;
}
if(pHead2==null){
return pHead1;
}
while(pHead1!=null&&pHead2!=null){
if(pHead1.val<=pHead2.val){
a.next = pHead1;
pHead1 = pHead1.next;
} else {
a.next = pHead2;
pHead2 = pHead2.next;
}
a = a.next;
}
if(pHead1 != null){
a.next = pHead1;
} else {
a.next = pHead2;
}
return b.next;
}
链表中倒数第k个结点
题目描述
输入一个链表,输出该链表中倒数第k个结点。
思路:让a和b都指向链表的头节点,然后a先走k步,然后a,b一起接着向后走,当a==null的时候,这时的b就是链表的倒数第k个节点。当然,要考虑一些特殊情况。
function FindKthToTail(head, k)
{
if(head==null||k<=0)//考虑链表为空和k小于0的特殊情况,返回null
return null;
var a = head;
var b = head;
while(k>0){
if(a==null){
return null;
}
//如果再走完k步之前,a已经等于null,即k大于链表长度,那么返回null
a = a.next;
k--;
}
while(a!=null){
a = a.next;
b = b.next;
}
return b;
}
剑指offer随练的更多相关文章
- 面试经典算法题集锦——《剑指 offer》小结
从今年 3 月份开始准备找实习,到现在校招结束,申请的工作均为机器学习/数据挖掘算法相关职位,也拿到了几个 sp offer.经历这半年的洗礼,自己的综合能力和素质都得到了一个质的提升. 实话说对于未 ...
- 【剑指Offer】剑指offer题目汇总
本文为<剑指Offer>刷题笔记的总结篇,花了两个多月的时间,将牛客网上<剑指Offer>的66道题刷了一遍,以博客的形式整理了一遍,这66道题属于相对基础的算法题目,对于 ...
- 剑指Offer面试题:1.实现Singleton模式
说来惭愧,自己在毕业之前就该好好看看<剑指Offer>这本书的,但是各种原因就是没看,也因此错过了很多机会,后悔莫及.但是后悔是没用的,现在趁还有余力,把这本书好好看一遍,并通过C#通通实 ...
- 剑指Offer面试题:14.链表的倒数第k个节点
PS:这是一道出境率极高的题目,记得去年参加校园招聘时我看到了3次,但是每次写的都不完善. 一.题目:链表的倒数第k个节点 题目:输入一个链表,输出该链表中倒数第k个结点.为了符合大多数人的习惯,本题 ...
- 《剑指offer》面试题12:打印1到最大的n位数
面试题12:打印1到最大的n位数 剑指offer题目12,题目如下 输入数字n,按顺序打印出1到最大的n位十进制数,比如输入3,则打印出1,2,3一直到最大的三位数999 方法一 和面试题11< ...
- 《剑指offer》面试题11: 数值的整数次方
面试题11: 数值的整数次方 剑指offer面试题11,题目如下 实现函数double power(double base,int exponent),求base的exponent次方, 不得使用库 ...
- 剑指 Offer 题目汇总索引
剑指 Offer 总目录:(共50道大题) 1. 赋值运算符函数(或应说复制拷贝函数问题) 2. 实现 Singleton 模式 (C#) 3.二维数组中的查找 4.替换空格 ...
- 面试题目——《剑指Offer》
1.把一个字符串转换成整数——<剑指Offer>P29 2.求链表中的倒数第k个结点——<剑指Offer>P30 3.实现Singleton模式——<剑指Offer> ...
- 剑指offer习题集2
1.把数组排成最小的数 class Solution { public: static bool compare(const string& s1, const string& s2) ...
随机推荐
- Matlab产生TestBeach所需要的波形数据
在用vivado仿真的时候,很多情况下需要自己产生波形来代替AD采样波形.以前的做法都是用DDS内部产生所需要的波形来模仿外部输入,后来发现这种做法不仅麻烦,而且不易修改,对仿真很不友好.于是改用ma ...
- 详解spl_autoload_register() 函数(转)
原文地址:http://blog.csdn.net/panpan639944806/article/details/23192267 在了解这个函数之前先来看另一个函数:__autoload. 一._ ...
- RChain总体架构图
RChain是我研究区块链依赖发现的和我最契合的(主要是用scala写的),在架构上吞吐率和扩展性也是最好,未来是真正有可能实现在它官网上宣称的能够承载facebook一样的规模,具有和visa一样的 ...
- jQuery的属性,事件及操作
1.属性操作 1.1 基本属性操作 $("img").attr("src") 返回文档中所有图像的src属性值 $("img").attr( ...
- hexo建立github,gitcafe博客并实时同步的要点
把hexo博客的源码和生成的页面实时同步到github和gitcafe. 用搜索引擎搜索"github 博客"等关键字会出现大量很好的文章教小白一步步搭建.我这里列出一些关键点,希 ...
- COGNOS安装与发布报表步骤
1. 安装 1.1安装前准备 安装COGNOS需要先安装好iis和sql Server(因为我们用的数据库系统就是SQLServer). 1.2安装过程 1) 找到BI Server文件 2) ...
- python监控接口请求
#!/usr/bin/env python #coding=utf8 import time,os,sched,urllib,httplib import smtplib import string ...
- CF518D. Ilya and Escalator [概率DP]
CF518D. Ilya and Escalator 题意:n个人,每秒p的概念队首的人进入电梯,求t秒后期望人数 直接使用期望定义 \(f[i][j]\) i秒后电梯中j个人的概率 注意n个人的时候 ...
- 自用lca模板
人丑常数大,总是卡在1000多ms... #include <cstdio> #include <cstring> #include <iostream> #def ...
- 洛谷 P3616 富金森林公园 [树状数组]
传送门 维护一个山脉,单点修改,查询有多少山峰高出水面 我是沙茶沙茶题都不会做只想到无修改可以用扫描线 答案就是所有比水面高的-相邻都比水面高的啊 因为没有区间询问写个$BIT$都可以 有区间询问?可 ...