算法第五周

算法第五周

1.汉诺塔问题

描述

在经典汉诺塔问题中,有 3 根柱子及 N 个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子。一开始,所有盘子自上而下按升序依次套在第一根柱子上(即每一个盘子只能放在更大的盘子上面)。移动圆盘时受到以下限制:

  1. 每次只能移动一个盘子;
  2. 盘子只能从柱子顶端滑出移到下一根柱子;
  3. 盘子只能叠在比它大的盘子上。

请编写程序,用栈将所有盘子从第一根柱子移到最后一根柱子。
你需要原地修改栈。

繼續閱讀
算法题-第四周

算法题-第三周

1.计算器

给定一个包含正整数、加(+)、减(-)、乘()、除(/)的算数表达式(括号除外),计算其结果。
表达式仅包含非负整数,+, - ,
,/ 四种运算符和空格  。 整数除法仅保留整数部分。

  • 示例 1:
    输入: “3+2*2”
    输出: 7
  • 示例 2:
    输入: " 3/2 "
    输出: 1
  • 示例 3:
    输入: " 3+5 / 2 "
    输出: 5

说明:你可以假设所给定的表达式都是有效的。请不要使用内置的库函数 eval。

繼續閱讀
算法题-第一周

算法题-第一周

1.URL化

描述

URL化。编写一种方法,将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的“真实”长度。(注:用Java实现的话,请使用字符数组实现,以便直接在数组上操作。)

繼續閱讀
算法题-第二周

算法题-第二周

1.两数相加

给你两个「非空」的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。

繼續閱讀