代码随想录算法训练营day01 | leetcode 704/27

饭宝  论坛元老 | 2023-1-11 23:13:54 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1665|帖子 1665|积分 4995

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
前言

  考研结束半个月了,自己也简单休整了一波,估了一下分,应该能进复试,但还是感觉不够托底。不管怎样,要把代码能力和八股捡起来了,正好看到卡哥有这个算法训练营,遂果断参加,为机试和日后求职打下一个基础。
  我之前断断续续地刷过一些LeetCode,但是不成体系,数量也少得可怜,才区区50+,在寻找暑期实习的过程中吃够了苦头,希望通过这次训练营得到一个长足的提升,养成自己写博客的习惯,慢慢提升自己的博客水准。

之前的LeetCode刷题分析
LeetCode

 704 二分查找

  二分是一个很基础的思维和技能,但是在动手敲代码时还是有些错误和值得完善的地方。我的初步思路是po出代码,卡壳&忽略等问题采用多行注释标注,(这也是我今后回顾的重点),并针对使用的数据结构和题目特征进行总结。
数据结构知识

  本题主要采用了数组这一在内存连续存储的数据结构,这里对java中的数组和常用“工具”进行介绍。数组的删除需要移动元素,这一点要尤其注意。
  1. //一维数组初始化
  2. type[] arrayName = new type[size];
  3. type[] arrayName = new type[]{值 1,值 2,值 3,值 4,• • •,值 n};
  4. type[] arrayName = {值 1,值 2,值 3,...,值 n};
  5. int[] number = {1,2,3,5,8};
  6. //遍历一
  7. for (int i=0;i<number.length;i++) {
  8.     System.out.println("第"+(i+1)+"个元素的值是:"+number[i]);
  9. }
  10. //遍历二
  11. for(int val:number) {
  12.     System.out.print("元素的值依次是:"+val+"\t");
  13. }
  14. //二维数组初始化
  15. type[][] arrayName = new type[size1][size2];    // 给定空间,在赋值
  16. type[][] arrayName = new type[size][];    // 数组第二维长度为空,可变化
  17. type[][] arrayName = new type[][]{{值 1,值 2,值 3,…,值 n},{值 1,值 2,值 3,…,值 n}};    // 在定义时初始化
  18. double[][] nums = { { 100, 99, 99 }, { 100, 98, 97 }, { 100, 100, 99.5 }, { 99.5, 99, 98.5 } };
  19. //遍历一
  20. for (int i = 0; i < nums.length; i++) { // 遍历行
  21.     for (int j = 0; j < nums[i].length; j++) {
  22.         System.out.println("nums[" + i + "][" + j + "]=" + nums[i][j]);
  23.     }
  24. }
  25. //遍历二
  26. for (double[] row : nums) {
  27.     for (double value : row) {
  28.         System.out.println(value);
  29.     }
  30. }
  31. /*
  32. * 注意 在二维数组中,直接使用 length 属性获取的是数组的行数,
  33. * 在指定的索引后加上 length(如 array[0].length)表示的是该行拥有多少个元素,即列数
  34. */
复制代码
  Java语言有很多API可以使用,是好事也是坏事,平时多记多用,减轻笔试压力,拓宽做题思路。
Code

[code]class Solution {    public int search(int[] nums, int target) {        /* 未优先考虑的        * 避免当 target 小于nums[0] nums[nums.length - 1]时多次循环运算        if (target < nums[0] || target > nums[nums.length - 1]) {            return -1;        }        */        int left = 0, right = nums.length - 1;        while(left
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

饭宝

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表