题外话
研究生三年都在用python做深度学习,也没有做出什么像样的成果,反而把吃饭的本领都丢掉了。
总是害怕来不及了来不及了是没用的,都说种一棵树最好的时候是十年前和现在,那就忘记害怕,立刻开始!
太久没写c++,一度不知道要怎么用c++刷Leetcode,重开这个本科时创建的博客,记录一下。
算法题刷的少,这是第一次刷代码随想录,计划使用c++和python两种语言都做一遍。
数组理论
数组:存放在连续内存空间中的相同类型数据的集合
- 正是因为数组的在内存空间的地址是连续的,所以在删除或者增添元素的时候,就难免要移动其他元素的地址。
- 数组的元素是不能删的,只能覆盖
对于二维数组:
- c++中二维数组在地址空间上是连续的
- Java中二维数组可能每行在地址空间上是连续的,但每一列之间并不连续
704 二分查找
题目:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
使用二分查找的前提是数组有序,我第一次做题时没注意到有序,直接遍历了一遍,要注意审题。
C++版本
class Solution {
public:
int search(vector<int>& nums, int target) {
int len = nums.size();
int left = 0, right= len - 1;
while (left <= right) {
// 左闭右闭区间
// int middle = ( left + right ) / 2;
int middle = left + ( right - left ) / 2; // 防止内存溢出
if (nums[middle] > target) {
right = middle - 1;
}