编程题之--链表反置

  对链表进行反置。例如:

  [1] -> [2] -> [3] -> [null]

变成:

  [3] -> [2] -> [1] -> [null]

自己思考的解法如下:

[null] [1] -> [2] -> [3] -> [null]
(p) (c) (n)
[null] <- [1] [2] -> [3] -> [null]
(p) (c) (n)

-------------------------------------

[null] <- [1] [2] -> [3] -> [null]
(p) (c) (n)
[null] <- [1] <- [2] [3] -> [null]
(p) (c) (n)

-------------------------------------

[null] <- [1] <- [2] [3] -> [null]
(p) (c) (n)
[null] <- [1] <- [2] <- [3] [null]
(p) (c) (n)

未完待续。。。

时间: 2024-08-03 10:20:18

编程题之--链表反置的相关文章

LeetCode Reverse Linked List II 反置链表2

题意:将指定的一段位置[m,n]的链表反置,返回链表头. 思路:主要麻烦在链表头,如果要从链表头就开始,比较特殊. 目前用DFS实现,先找到m-1的位置,再找到n+1的位置,中间这段就是否要反置的,交给DFS解决,用个计数器来统计已经反置的个数即可. 1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNode(int x) : va

LeetCode Reverse Nodes in k-Group 每k个节点为一组,反置链表

题意:给一个单链表,每k个节点就将这k个节点反置,若节点数不是k的倍数,则后面不够k个的这一小段链表不必反置. 思路:递归法.每次递归就将k个节点反置,将k个之后的链表头递归下去解决.利用原来的函数接口即可,不用重新定义. 1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNode(int x) : val(x), next(NUL

挑战编程题(三)

接 挑战编程题(二)http://www.cnblogs.com/qiange/p/5090588.html 题目: 有两个非负数的链表,每个链表都反序的存储一个多位数字的每一位,(例如:链表2->4->3  数字342),现在求两个链表数字的相加,求和的链表. 例如: Input: (2 -> 4 -> 3) + (5 -> 6 -> 4) Output: 7 -> 0 -> 8 /** * Definition for singly-linked lis

2. Python面试编程题汇总

编程题 1 台阶问题/斐波纳挈 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. fib = lambda n: n if n <= 2 else fib(n - 1) + fib(n - 2) 第二种记忆方法 def memo(func): cache = {} def wrap(*args): if args not in cache: cache[args] = func(*args) return cache[args] return wrap

网易2017秋招编程题集合-牛客网

网易2017秋招编程题集合-牛客网 链接:https://www.nowcoder.com/questionTerminal/0147cbd790724bc9ae0b779aaf7c5b50来源:牛客网 如果一个数字序列逆置之后跟原序列是一样的就称这样的数字序列为回文序列.例如: {1, 2, 1}, {15, 78, 78, 15} , {112} 是回文序列, {1, 2, 2}, {15, 78, 87, 51} ,{112, 2, 11} 不是回文序列. 现在给出一个数字序列,允许使用一

算法是什么我记不住,But i do it my way. 解一道滴滴出行秋招编程题。

只因在今日头条刷到一篇文章,我就这样伤害我自己,手贱. 刷头条看到一篇文章写的滴滴出行2017秋招编程题,后来发现原文在这里http://www.cnblogs.com/SHERO-Vae/p/5882357.html.看了下,挺有意思,于是就想了想,又写了写,最终撸出来了.刚开始一看顿时感觉很熟悉,大学数据结构和算法课肯定讲过相关东西,什么深度搜索,广度搜索,最优路径,最优解...但是现在你让我说个一二三,我还就只记住几个名字,说不定名字都记错.我向来不喜欢死记东西,能查到的真的不想背下来,而

上机操作编程题

一.写一个简单的缓存系统 1 package com.wisezone.demo; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 /** 6 * 上机操作: 7 * 面试题--写一个简单的缓存系统 8 * @author 王东海 9 * @2017年6月5日 10 */ 11 public class CacheDemo 12 { 13 private Map<String, Object> map = new HashMap&

[编程题-京东]小球的距离

[编程题] 小球的距离 小东和三个朋友一起在楼上抛小球,他们站在楼房的不同层,假设小东站的楼层距离地面N米,球从他手里自由落下,每次落地后反跳回上次下落高度的一半,并以此类推知道全部落到地面不跳,求4个小球一共经过了多少米?(数字都为整数) 给定四个整数A,B,C,D,请返回所求结果. 测试样例: 100,90,80,70 返回:1020 class Balls { public: int calcDistance(int A, int B, int C, int D) { // write c

华为机试4[编程题] 删数

[编程题] 删数 有一个数组a[N]顺序存放0~N-1,要求每隔两个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置.以8个数 (N=7)为例:{0,1,2,3,4,5,6,7},0->1->2(删除)->3->4->5(删除)-> 6->7->0(删除),如此循环直到最后一个数被删除. 输入描述: 每组数据为一行一个整数n(小于等于1000),为数组成员数,如果大于1000,则对a[999]进行计算. 输出描述: 一行输出最后一