前言

  考研结束半个月了,自己也简单休整了一波,估了一下分,应该能进复试,但还是感觉不够托底。不管怎样,要把代码能力和八股捡起来了,正好看到卡哥有这个算法训练营,遂果断参加,为机试和日后求职打下一个基础。

  我之前断断续续地刷过一些LeetCode,但是不成体系,数量也少得可怜,才区区50+,在寻找暑期实习的过程中吃够了苦头,希望通过这次训练营得到一个长足的提升,养成自己写博客的习惯,慢慢提升自己的博客水准。

之前的LeetCode刷题分析

LeetCode

704 二分查找

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

数据结构知识

  本题主要采用了数组这一在内存连续存储的数据结构,这里对java中的数组和常用“工具”进行介绍。数组的删除需要移动元素,这一点要尤其注意。

//一维数组初始化
type[] arrayName = new type[size];
type[] arrayName = new type[]{值 1,值 2,值 3,值 4,• • •,值 n};
type[] arrayName = {值 1,值 2,值 3,...,值 n}; int[] number = {1,2,3,5,8};
//遍历一
for (int i=0;i<number.length;i++) {
System.out.println("第"+(i+1)+"个元素的值是:"+number[i]);
}
//遍历二
for(int val:number) {
System.out.print("元素的值依次是:"+val+"\t");
} //二维数组初始化
type[][] arrayName = new type[size1][size2]; // 给定空间,在赋值
type[][] arrayName = new type[size][]; // 数组第二维长度为空,可变化
type[][] arrayName = new type[][]{{值 1,值 2,值 3,…,值 n},{值 1,值 2,值 3,…,值 n}}; // 在定义时初始化 double[][] nums = { { 100, 99, 99 }, { 100, 98, 97 }, { 100, 100, 99.5 }, { 99.5, 99, 98.5 } };
//遍历一
for (int i = 0; i < nums.length; i++) { // 遍历行
for (int j = 0; j < nums[i].length; j++) {
System.out.println("nums[" + i + "][" + j + "]=" + nums[i][j]);
}
}
//遍历二
for (double[] row : nums) {
for (double value : row) {
System.out.println(value);
}
}
/*
* 注意 在二维数组中,直接使用 length 属性获取的是数组的行数,
* 在指定的索引后加上 length(如 array[0].length)表示的是该行拥有多少个元素,即列数
*/

  Arrays & Collections 工具类

int[] array;
int[][] twoDArray; Arrays.toString(array);
// 数组到字符串
Arrays.asList(array);
// array到list
Arrays.sort(array);
// 升序排列数组
Arrays.sort(twoDArray,(v1,v2) -> v1[0] - v2[0]);
// v1 v2是每一行的元素 每一行升序排列
Arrays.binarySearch(array, 3);
// 二分查找
Arrays.fill(array, val);
// 填充数据
Arrays.copyOfRange(array,from,to);
// [from,to)
Arrays.copyOf(array, 8);
// 获取新数组 少补多截
Arrays.equals(array1,array2);
// @Return boolean String[] in = new String[]{ "1", "a"};
List<String> out = new ArrayList<>(in.length);
// 创建列表,并指定长度,避免可能产生的扩容
Collections.addAll(out, in);
// 这样新建的集合out可以进行add等操作

  Java语言有很多API可以使用,是好事也是坏事,平时多记多用,减轻笔试压力,拓宽做题思路。

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 <= right){
int mid = (left+right)/2;
int val = nums[mid];
if(val == target){
return mid;
}else if(val < target){
left = mid+1;
}else{
right = mid-1;
}
}
return -1;
}
}

 27 移除元素

code

  这题没什么值得说的,基本的数组移动

class Solution {
public int removeElement(int[] nums, int val) {
int len = nums.length;
int ans = len;
for(int i = 0; i<len;){
if(nums[i] == val){
for(int j=i; j<len-1; j++){
nums[j] = nums[j+1];
}
len--;
ans--;
continue;
}else{
i++;
}
}
return ans;
}
}

总结:

写代码是件费脑子的事情,要是能找到银弹可就太好了,可目前还是只能一点一点去积累经验,形成自己的刷题模式,不断完善。下面是我总结的一些通用的刷题考虑方向,后续会不断完善,欢迎评论区各位码友分享自己的经验。

  1. 优先考虑特殊情况
  2. 动笔画图,推演执行过程
  3. 打日志

欢迎指正!

代码随想录算法训练营day01 | leetcode 704/27的更多相关文章

  1. 【算法训练营day4】LeetCode24. 两两交换链表中的结点 LeetCode19. 删除链表的倒数第N个结点 LeetCode面试题 02.07. 链表相交 LeetCode142. 环形链表II

    [算法训练营day4]LeetCode24. 两两交换链表中的结点 LeetCode19. 删除链表的倒数第N个结点 LeetCode面试题 02.07. 链表相交 LeetCode142. 环形链表 ...

  2. 【算法训练营day1】LeetCode704. 二分查找 LeetCode27. 移除元素

    [算法训练营day1]LeetCode704. 二分查找 LeetCode27. 移除元素 LeetCode704. 二分查找 题目链接:704. 二分查找 初次尝试 看到题目标题是二分查找,所以尝试 ...

  3. 【算法训练营day7】LeetCode454. 四数相加II LeetCode383. 赎金信 LeetCode15. 三数之和 LeetCode18. 四数之和

    [算法训练营day7]LeetCode454. 四数相加II LeetCode383. 赎金信 LeetCode15. 三数之和 LeetCode18. 四数之和 LeetCode454. 四数相加I ...

  4. 【算法训练营day8】LeetCode344. 反转字符串 LeetCode541. 反转字符串II 剑指Offer05. 替换空格 LeetCode151. 翻转字符串里的单词 剑指Offer58-II. 左旋转字符串

    [算法训练营day8]LeetCode344. 反转字符串 LeetCode541. 反转字符串II 剑指Offer05. 替换空格 LeetCode151. 翻转字符串里的单词 剑指Offer58- ...

  5. 算法进阶之Leetcode刷题记录

    目录 引言 题目 1.两数之和 题目 解题笔记 7.反转整数 题目 解题笔记 9.回文数 题目 解题笔记 13.罗马数字转整数 题目 解题笔记 14.最长公共前缀 题目 解题笔记 20.有效的括号 题 ...

  6. 【算法题 14 LeetCode 147 链表的插入排序】

    算法题 14 LeetCode 147 链表的插入排序: 解题代码: # Definition for singly-linked list. # class ListNode(object): # ...

  7. 代码随想录第十三天 | 150. 逆波兰表达式求值、239. 滑动窗口最大值、347.前 K 个高频元素

    第一题150. 逆波兰表达式求值 根据 逆波兰表示法,求表达式的值. 有效的算符包括 +.-.*./ .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 注意 两个整数之间的除法只保留整数部分. ...

  8. 代码随想录第八天 |344.反转字符串 、541. 反转字符串II、剑指Offer 05.替换空格 、151.翻转字符串里的单词 、剑指Offer58-II.左旋转字符串

    第一题344.反转字符串 编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 s 的形式给出. 不要给另外的数组分配额外的空间,你必须原地修改输入数组.使用 O(1) 的额外空间解决这 ...

  9. Manacher算法学习笔记 | LeetCode#5

    Manacher算法学习笔记 DECLARATION 引用来源:https://www.cnblogs.com/grandyang/p/4475985.html CONTENT 用途:寻找一个字符串的 ...

  10. 程序员进阶之算法练习:LeetCode专场

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由落影发表 前言 LeetCode上的题目是大公司面试常见的算法题,今天的目标是拿下5道算法题: 题目1是基于链表的大数加法,既考察基本 ...

随机推荐

  1. 【大数据面试】【框架】Shuffle优化、内存参数配置、Yarn工作机制、调度器使用

    三.MapReduce 1.Shuffle及其优化☆ Shuffle是Map方法之后,Reduce方法之前,混洗的过程 Map-->getPartition(标记数据的分区)-->对应的环 ...

  2. win10中jupyter notebook设置conda虚拟环境全流程及问题汇总

    正常安装流程 1.安装anaconda 必备条件 2.安装jupyter notebook 一般anaconda自带安装 如没有,则在终端安装 conda install jupyter notebo ...

  3. Spring框架之IOC入门

    1.开发环境 IDEA版本: 2022.1.4 Maven版本:3.8.6 Spring版本:6.0.2 2.案例分析 2.1 自定义Man类 2.2 自定义Company类 2.3 自定义Compa ...

  4. go-carbon 1.5.3 版本发布, 修复已知 bug 和新增俄罗斯语翻译文件

    carbon 是一个轻量级.语义化.对开发者友好的golang时间处理库,支持链式调用. 目前已被 awesome-go 收录,如果您觉得不错,请给个star吧 github.com/golang-m ...

  5. JavaScript入门⑨-异步编程●异世界之旅

    JavaScript入门系列目录 JavaScript入门①-基础知识筑基 JavaScript入门②-函数(1)基础{浅出} JavaScript入门③-函数(2)原理{深入}执行上下文 JavaS ...

  6. 接口Interface的作用不止是解耦

    简言: 好久没写博客了,今天手痒想写一写.废话少说,我们直入主题,相信大家对接口interface,这个单词一定不陌生.但是要说到它的作用,除了解耦之外,还有什么作用呢?可能大多数人都不是很清楚(大牛 ...

  7. IntelliJ IDEA中我最爱的10个快捷操作

    前言 欢迎关注微信公众号「JAVA旭阳」交流和学习 IntelliJ IDEA提供了一些Java的快捷键,同样也可以帮助我们提高日常的开发效率.关于这些快捷操作,你知道那几个呢? 1. psvm/ma ...

  8. python 爬站长素材网页图片

    一.我们要用python第三方库: import requests import re 二.找到自己感兴趣的网页图片: for i in range(1,2): url = "https:/ ...

  9. 10、RestTemplate方式实现远程调用Client

    一.JSONObject类详解: JSONobject是FastJson提供的对象,在API中是用一个私有的常量map进行封装的,实际就是一个map,只不过 FastJson对其进行了封装,添加了很多 ...

  10. Codeforces Round #569 (Div. 2)

    题解 Codeforces Round #569 (Div. 2) rank:1306/11165 rate: +43 1424 → 1467 Codeforces Round #569 (Div. ...