这几天一直再想这样刷题真的有必要么,这种单纯的刷题刷得到尽头么???

这种出题的的题目是无限的随便百度,要多少题有多少题,那么我这一直刷的意义在哪里???

最近一直苦苦思考,不明所以,刷题刷得更多的感受是机械化的操作。

抽空看了以前乔布斯的演讲有点感受,经过几天的思考最终我想通了。

这里刷题是对自己思考方式的提炼,这种题写多了对自己编码的思维方式有所提升这个是无形的。

其次我没必要去这么刷题,因为题目无限,时间有限,所以应该做的是去品味每一道题,思考如果以后遇到同类的题,我应该从一个什么样的角度去思考,明白如何去实现。

所以要时刻总结,不能题海,还要有质量,只有质量和数量都上去了,才能见识正在的威力,单纯求质量也是不够的,这个度要自己把握了!!!

加油

今日份的leetcode

package y2019.Algorithm.array.medium;

/**
* @ProjectName: cutter-point
* @Package: y2019.Algorithm.array.medium
* @ClassName: FindPeakElement
* @Author: xiaof
* @Description: TODO 162. Find Peak Element
* A peak element is an element that is greater than its neighbors.
* Given an input array nums, where nums[i] ≠ nums[i+1], find a peak element and return its index.
* The array may contain multiple peaks, in that case return the index to any one of the peaks is fine.
* You may imagine that nums[-1] = nums[n] = -∞.
*
* 峰值元素是指其值大于左右相邻值的元素。
* 给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。
* 数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。
* 你可以假设 nums[-1] = nums[n] = -∞。
*
* 来源:力扣(LeetCode)
* 链接:https://leetcode-cn.com/problems/find-peak-element
* 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
*
* Input: nums = [1,2,3,1]
* Output: 2
* Explanation: 3 is a peak element and your function should return the index number 2.
*
* @Date: 2019/7/24 8:57
* @Version: 1.0
*/
public class FindPeakElement { public int solution(int[] nums) { if(nums == null || nums.length <= 0) {
return -1;
} if(nums.length == 1) {
return 0;
} //二分查找局部最大值
int l = 0, r = nums.length - 1;
int res = -1; while (l <= r) {
int mid = (l + r) / 2;
//判断mid是否锋值,比之前的数据和之后的数据都要大,如果是边缘数据,那么就只要比较一边就行
int left = (mid - 1) < 0 ? Integer.MIN_VALUE : nums[mid - 1];
int right = (mid + 1) >= nums.length ? Integer.MIN_VALUE : nums[mid + 1];
if(nums[mid] > left && nums[mid] > right) {
res = mid;
return res;
} else if (left > nums[mid]) {
//左边比较大,我们往左边靠
r = mid - 1;
} else {
l = mid + 1;
}
} return res;
}
}
package y2019.Algorithm.array.medium;

/**
* @ProjectName: cutter-point
* @Package: y2019.Algorithm.array.medium
* @ClassName: SetZeroes
* @Author: xiaof
* @Description: TODO 73. Set Matrix Zeroes
* Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in-place.
*
* Input:
* [
* [1,1,1],
* [1,0,1],
* [1,1,1]
* ]
* Output:
* [
* [1,0,1],
* [0,0,0],
* [1,0,1]
* ]
*
* A straight forward solution using O(mn) space is probably a bad idea.
* A simple improvement uses O(m + n) space, but still not the best solution.
* Could you devise a constant space solution?
*
* @Date: 2019/7/24 9:44
* @Version: 1.0
*/
public class SetZeroes { public void solution(int[][] matrix) {
//这题要求空间复杂度小于O(m+n)
//如果是这个要求的话,双循环直接再原来的矩阵中操作
//1.首先吧矩阵的边上的位置应该为0的设置为0
int c = 1;
for(int i = 0; i < matrix.length; ++i) {
if(matrix[i][0] == 0) c = 0; //如果本身这个位置边上就是0
for(int j = 1; j < matrix[i].length; ++j) {
//设置边为0
if(matrix[i][j] == 0) {
matrix[i][0] = matrix[0][j] = 0;
}
}
}
//2.再次遍历矩阵,只要这个i,j对应的值的i,0或者0,j为0,那么就设置为0
//因为设置为0的是上面和左边,那么我们从右下开始遍历
for(int i = matrix.length - 1; i >= 0; --i) {
for(int j = matrix[i].length - 1; j >= 1; --j) { //第一列不用遍历,因为已经修改过了
//设置边为0
if(matrix[i][0] == 0 || matrix[0][j] == 0) {
matrix[i][j] = 0;
}
}
//最后一列单独判断,避免重复吧变化了之后的数据再次操作
if(c == 0) {
//c标识这个列上本身存在0
matrix[i][0] = 0;
}
} } }

【LEETCODE】61、对leetcode的想法&数组分类,适中级别,题目:162、73的更多相关文章

  1. LeetCode:长度最小的子数组【209】

    LeetCode:长度最小的子数组[209] 题目描述 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组.如果不存在符合条件的连续子数组,返回 ...

  2. 【LeetCode题解】350_两个数组的交集Ⅱ

    目录 [LeetCode题解]350_两个数组的交集Ⅱ 描述 方法一:映射 Java 实现 Python 实现 类似的 Python 实现 方法二:双指针 Java 实现 Python 实现 [Lee ...

  3. 【LeetCode题解】349_两个数组的交集

    目录 [LeetCode题解]349_两个数组的交集 描述 方法一:两个哈希表 Java 实现 类似的 Java 实现 Python 实现 类似的 Python 实现 方法二:双指针 Java 实现 ...

  4. LeetCode初级算法的Python实现--数组

    LeetCode初级算法的Python实现--数组 # -*- coding: utf-8 -*- """ @Created on 2018/6/3 17:06 @aut ...

  5. LeetCode:最少移动次数使得数组元素相等||【462】

    LeetCode:最少移动次数使得数组元素相等||[462] 题目描述 给定一个非空整数数组,找到使所有数组元素相等所需的最小移动数,其中每次移动可将选定的一个元素加1或减1. 您可以假设数组的长度最 ...

  6. Leetcode之二分法专题-852. 山脉数组的峰顶索引(Peak Index in a Mountain Array)

    Leetcode之二分法专题-852. 山脉数组的峰顶索引(Peak Index in a Mountain Array) 我们把符合下列属性的数组 A 称作山脉: A.length >= 3 ...

  7. 【python】Leetcode每日一题-删除有序数组中的重复项

    [python]Leetcode每日一题-删除有序数组中的重复项 [题目描述] 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 最多出现一次 ,返回删除后数组的新长度. 不要 ...

  8. 【python】Leetcode每日一题-搜索排序数组2

    [python]Leetcode每日一题-搜索排序数组2 [题目描述] 已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同. 在传递给函数之前,nums 在预先未知的某个下标 k( ...

  9. 【python】Leetcode每日一题-删除有序数组中的重复项2

    [python]Leetcode每日一题-删除有序数组中的重复项2 [题目描述] 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 最多出现两次 ,返回删除后数组的新长度. 不 ...

随机推荐

  1. 鸿蒙OS还有机会吗?

    鸿蒙最初的定位是手机操作系统,那在市场已饱和.生态已成熟,Android地位已牢不可破的当下,能成功是小概率事件,就像PC时代无法撼动Windows地位一样. 好在鸿蒙调整定位定义为面向未来的IOT操 ...

  2. Java接口、lambda的学习

    接口的实现  :  使用interface定义:形式如下 interface Printable{ final int MAX = 100; void add(); float sum(float x ...

  3. 再说js隐式转换

    再说js隐式转换 自己整理的一个整体规则如下: Date 默认 走 toString, 如果 toString 返回的是对象, 那么查看 valueOf 其他对象的转换, 默认走 valueOf, 但 ...

  4. Spring实现多数据源配置

    一.前言 对于小型项目,服务器与数据库是可以在同一台机子上的,但随着业务的庞大与负责,数据库和服务器就会分离开来.同时随着数据量的增大,数据库也要分开部署到多台机子上. 二.Spring配置文件修改 ...

  5. spring boot整合websocket之使用自带tomcat启动项目报错记录

    项目中用到websocket,就将原来写好的websocket工具类直接拿来使用,发现前端建立连接的时候报404,经查找发现是因为原来用的是配置的外部tomcat启动,这次是spring boot自带 ...

  6. [Gamma阶段]第三次Scrum Meeting

    Scrum Meeting博客目录 [Gamma阶段]第三次Scrum Meeting 基本信息 名称 时间 地点 时长 第三次Scrum Meeting 19/05/29 大运村寝室6楼 30min ...

  7. 假如 Redis Cluster 模式用在 T-io 上

    前言   前几天在学习Redis Cluster 模式的时候,突然想到如果把它的集群模式应用在T-io上也是挺有意思的一件事情. Redis 集群简介    Redis Cluster 中有 N 台实 ...

  8. vs2017下载安装

    https://docs.microsoft.com/en-us/visualstudio/releasenotes/vs2017-relnotes

  9. 修改jar包中的文件

    1.用WinRAR压缩软件打开jar包 2.将修改过的文件直接拖拽并覆盖被替换的文件即可

  10. Hash冲突的线性探测开放地址法

    在实际应用中,无论如何构造哈希函数,冲突是无法完全避免的. 开放地址法 这个方法的基本思想是:当发生地址冲突时,按照某种方法继续探测哈希表中的其他存储单元,直到找到空位置为止.这个过程可用下式描述:  ...