Ethan's Blog


  • Home

  • Archives

  • Tags

  • Search

面试题 4:二维数组中的查找

Posted on 2017-05-18

在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

  • 通过分析简单具体的例子,试图寻找普遍的规律。
  • 在二维数组的中间选取一个数字,转变成从数组的一个角上选取数字。
  • 如果该数字大于要查找的数字,则剔除这个数字所在列;如果该数字小于要查找的数字,则剔除这个数字所在的行。
  • 也可以选取左下角的数字。
  • 注意特殊输入测试(空指针)。
  • 根据行号和列号计算出相对于数组首地址的偏移量。

Source Code

AOAPC 读书笔记 Ⅲ

Posted on 2017-05-07

C++ 与 STL 入门

从C 到 C++

与其把 C++ 学得一知半解,还不如先把 C 语言的基础打好;
C++ 的精华与糟粕并存。

C++ 版框架

使用 C 头文件:在 C 头文件前加一个小写的 c 字母,然后去掉 .h 后缀;
C++ 流最大的缺点就是运行太慢;
如果两个函数的参数类型完全相同,则是不能重载的,解决方案是:分别把函数写在各自的命名空间里;
使用了 using namespace std 语句,可以用 cin 代替 std::cin,cout 代替 std::cout;
使用 const 声明常数,而不是用 #define;
仍然可以用 int 来表示真假,但是用 bool 可以让程序更清晰。

Read more »

《面试宝典》读书笔记 Ⅲ

Posted on 2017-05-06

异常处理、输入输出流、Java 平台与内存管理

finally 块不一定会被执行

  • 当程序在进入try 块之前就出现异常,会直接结束,不会执行 finally 块中的代码;
  • 当程序在 try 块中强制退出时,也不会去执行 finally 块中的代码。

异常处理的原理

异常处理的目的:为了提高程序的安全性与鲁棒性。
JVM 将出现的错误表示为一个异常并抛出,这个异常可以在 catch 块中进行捕获,然后进行处理。
Java 中把异常当作对象来处理,并定义了一个基类(java.lang.Throwable)作为所有异常的父类。

Read more »

《面试宝典》读书笔记 Ⅱ

Posted on 2017-05-04

关键字、基本类型与运算、字符串与数组

变量命名的规则

标识符

  • 变量名
  • 函数名
  • 数组名

break、continue、return 的区别

break

用于直接强行跳出当前循环,不再执行剩余代码。
仅仅终止了内层循环的执行,而不影响外层循环的执行。

Read more »

AOAPC 读书笔记 Ⅱ

Posted on 2017-05-03

函数和递归

自定义函数和结构体

函数可以定义成:

1
2
3
4
返回类型 函数名(参数列表) 
{
函数体
}

函数体的最后一条语句,应该是“return 表达式”;
参数和返回值最好是“一等公民”;
执行过程中,碰到了 return 语句,将直接退出这个函数,不去执行后面的语句;
始终没有 return 语句,则会返回一个不确定的值。
定义结构体的方法为:

1
2
3
4
struct 结构体名称 
{
域定义
};
Read more »
1…51525354
necusjz

necusjz

270 posts
16 tags
© 2016 - 2026 necusjz
Powered by Hexo
Theme - NexT.Mist