Cracking the coding interview

CareerCup

目录

Chapter 1 | Arrays and Strings

1.1  Implement an algorithm to determine if a string has all unique characters. What if you can not use additional data structures?
1.2 Write code to reverse a C-Style String. (C-String means that “abcd” is represented as five characters, including the null character.)
1.3 Design an algorithm and write code to remove the duplicate characters in a string without using any additional buffer NOTE: One or two additional variables
are fine An extra copy of the array is not FOLLOW UP
1.4 Write a method to decide if two strings are anagrams or not.
 1.5 Write a method to replace all spaces in a string with ‘%20’.
1.6 Given an image represented by an NxN matrix, where each pixel in the image is 4 bytes, write a method to rotate the image by 90 degrees. Can you do this
in place?
1.7 Write an algorithm such that if an element in an MxN matrix is 0, its entire row and column is set to 0.
1.8 Assume you have a method isSubstring which checks if one word is a substring of another. Given two strings, s1 and s2, write code to check if s2 is a
rotation of s1 using only one call to isSubstring ( i.e., “waterbottle” is a rotation of “erbottlewat”).

Chapter 2 | Linked Lists

2.1 Write code to remove duplicates from an unsorted linked list.
2.2 Implement an algorithm to find the nth to last element of a singly linked list.

陆续更新.........

时间: 2024-10-22 18:50:24

Cracking the coding interview的相关文章

Cracking the Coding Interview:: 寻找有环链表的环路起始节点

给定一个有环链表,实现一个算法返回环路的开头节点. 这个问题是由经典面试题-检测链表是否存在环路演变而来.这个问题也是编程之美的判断两个链表是否相交的扩展问题. 首先回顾一下编程之美的问题. 由于如果两个链表如果相交,那么交点之后node都是共享(地址相同)的,因此最简单暴力的方法就是两个for循环,判断该链表的node是否属于另外一个链表.但是这个算法复杂度是O(length1 * length2).如果链表较长,这个复杂度有点高了. 当然也可以遍历其中某个链表,将node的地址存储hash

Google Interview University - 坚持完成这套学习手册,你就可以去 Google 面试了

本文讲的是Google Interview University - 坚持完成这套学习手册,你就可以去 Google 面试了, 这是我为了从 web 开发者(自学.非计算机科学学位)蜕变至 Google 软件工程师所制定的计划,其内容历时数月. 这一长列表是从 Google 的指导笔记 中萃取出来并进行扩展.因此,有些事情你必须去了解一下.我在列表的底部添加了一些额外项,用于解决面试中可能会出现的问题.这些额外项大部分是来自于 Steve Yegge 的"得到在 Google 工作的机会&quo

对菜鸟开发者的叮咛:花一万个小时练习 Coding,不要浪费一万小时无谓地 Debugging

对菜鸟开发者的叮咛:花一万个小时练习 Coding,不要浪费一万小时无谓地 Debugging 发布于:2014-09-04 11:14阅读数:4090 Coding 之于科技的重要性不言可喻,也不再是软件工程师的专利,医师.律师.会计师.护理师.金融从业人员,甚至是听起来摸不着边的政治家,不论是哪个行业,学习 Coding 已经成为世界新趋 "" (via:科技报橘)   Coding 之于科技的重要性不言可喻,也不再是软件工程师的专利,医师.律师.会计师.护理师.金融从业人员,甚至

Book List

C++ Primer C++程序设计语言特别版 Thinking in C++ Effective C++ More Effective C++ 深度探索C++对象模型| C++标准程序库-自修教程与参考手册 STL源码剖析 Effective STL 编程之美 Cracking the Coding Interview Google C++编程风格 编写高质量代码:改善C++程序的150个建议 华为内部程序设计培训 程序员面试宝典–欧立奇 程序员面试宝典白金版 剑指Offer 数据结构 算法导

如何求二叉树深度

题目描述: 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度. 输入: 第一行输入有n,n表示结点数,结点号从1到n.根结点为1. n <= 10. 接下来有n行,每行有两个个整型a和b,表示第i个节点的左右孩子孩子.a为左孩子,b为右孩子.当a为-1时,没有左孩子.当b为-1时,没有右孩子. 输出: 输出一个整型,表示树的深度. 样例输入: 3 2 3 -1 -1 -1 -1 样例输出: 2 之前在Cracking the

如何左旋转字符串

题目描述: 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左移K位后的序列输出.例如,字符序列S="abcXYZdef",要求输出循环左移3位后的结果,即"XYZdefabc".是不是很简单?OK,搞定它! 输入: 多组测试数据,每个测试数据包含一个字符序列S和非负整数K.其中S的长度不超过1000. 输出: 对应每个测试案例,输出新序列. 样例输入: UDBOJ 4 a

剑指offer:包含min函数的栈

剑指offer上的第21题,之前在Cracking the Coding interview上做过,思路参考这里,这次写了测试函数,在九度OJ上测试通过. 题目描述: 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数. 输入: 输入可能包含多个测试样例,输入以EOF结束. 对于每个测试案例,输入的第一行为一个整数n(1<=n<=1000000), n代表将要输入的操作的步骤数. 接下来有n行,每行开始有一个字母Ci. Ci='s'时,接下有一个数字k,代表将k压入栈. Ci

想染指系统架构?你绝对不可错过的一篇

本文讲的是想染指系统架构?你绝对不可错过的一篇., 系统设计入门 翻译 有兴趣参与翻译? 以下是正在进行中的翻译: 巴西葡萄牙语 简体中文(已完成) 土耳其语 目的 学习如何设计大型系统. 为系统设计的面试做准备. 学习如何设计大型系统 学习如何设计可扩展的系统将会有助于你成为一个更好的工程师. 系统设计是一个很宽泛的话题.在互联网上,关于系统设计原则的资源也是多如牛毛. 这个仓库就是这些资源的组织收集,它可以帮助你学习如何构建可扩展的系统. 从开源社区学习 这是一个不断更新的开源项目的初期的版

[译] 系统设计入门 | 掘金翻译计划

本文讲的是[译] 系统设计入门 | 掘金翻译计划, 原文地址:github.com/donnemartin- 译文出自:掘金翻译计划 译者:XatMassacrE.L9m.Airmacho.xiaoyusilen.jifaxu 这个 链接 用来查看本翻译与英文版是否有差别(如果你没有看到 README.md 发生变化,那就意味着这份翻译文档是最新的). 更多内容请见:github.com/xitu/system- 系统设计入门 翻译 有兴趣参与翻译? 以下是正在进行中的翻译: 巴西葡萄牙语 简体