每日一题_每日一题 leetcode - CSDN
精华内容
参与话题
  • 每日一题(一)

    2019-07-23 07:26:07
    1.a和b交换 思路:做这个的思路就是结合现实,两个盛满水的杯子a和b,如何将里面的水互换,也就是让b的水用a的杯子,a的水用b的杯子,这里需要做的就是找到第三个杯子c,将a中的水倒入c中,这时候a的杯子...第步:...

    1.a和b交换
    思路:做这个的思路就是结合现实,两个盛满水的杯子a和b,如何将里面的水互换,也就是让b的水用a的杯子,a的水用b的杯子,这里需要做的就是找到第三个杯子c,将a中的水倒入c中,这时候a的杯子就是空的,然后将b中的水到进此刻空的a杯中(这里就完成了b的水用a的杯子),这时候b的杯子就是空的了,紧接着就可以将c中的水(也就是a的水)倒入空的b杯中,这时候就完成a的水用b的杯子了
    第一步:新增变量c(空杯)
    第二步:使a赋值给c(将a中的水倒入c中)
    第三步:使b值赋给a(将b中的水倒入a中)
    第四步:使c赋值给b(将此时c中的水倒入b杯中)

    c=a
    a=b
    b=c

    转载于:https://www.cnblogs.com/endmoon/p/9408125.html

    展开全文
  • 每日一题--05

    2020-06-03 18:07:34
    面试47. 礼物的最大价值 难度中等37收藏分享切换为英文关注反馈 在个 m*n 的棋盘的每格都放有个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向...

    面试题47. 礼物的最大价值

    难度中等37收藏分享切换为英文关注反馈

    在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?

     

    示例 1:

    输入: 
    [
      [1,3,1],
      [1,5,1],
      [4,2,1]
    ]
    输出: 12
    解释: 路径 1→3→5→2→1 可以拿到最多价值的礼物

     

     

    这个一个和能简单的动态规划题,建立一个与grid等大的二维数组A,A数组每一个元素的含义是到达当前节点获得最大的礼物。

    方程:A[I][J]=max(grid[i-1][j],grid[i][j-1])+grid[i][j]

    代码:

    from typing import List
    
    
    class Solution:
        def maxValue(self, grid: List[List[int]]) -> int:
            #DP 状态转移方程
            dp = [[0 for x in range(len(grid[0]))] for y in range(len(grid))]
            for i in range(0,len(grid)):
                for j in range(0,len(grid[0])):
                    if i ==0 and j==0:
                        dp[i][j]=grid[i][j]
                    elif i ==0:
                        dp[i][j]=dp[i][j-1]+grid[i][j]
                    elif j==0:
                        dp[i][j]=dp[i-1][j]+grid[i][j]
                    else:
                        dp[i][j]=max(dp[i][j-1],dp[i-1][j])+grid[i][j]
            return dp[-1][-1]
    a=[[1]]
    print(Solution.maxValue(1,a))

     

    展开全文
  • 每日一题(web前端)

    2019-07-17 11:34:50
    第 1 :写 React / Vue 项目时为什么要在列表组件中写 key,其作用是什么? key是给每个vnode的唯一id,可以依靠key,更准确, 更快的拿到oldVnode中对应的vnode节点。 1. 更准确 因为带key就不是就地复用了(不...

    第 1 题:写 React / Vue 项目时为什么要在列表组件中写 key,其作用是什么? 

    key是给每一个vnode的唯一id,可以依靠key,更准确, 更的拿到oldVnode中对应的vnode节点。

    1. 更准确

    因为带key就不是就地复用了(不带有key,并且使用简单的模板,基于这个前提下,可以更有效的复用节点,diff速度来看也是不带key更加快速的,因为带key在增删节点上有耗时。这就是vue文档所说的默认模式。但是这个并不是key作用,而是没有key的情况下可以对节点就地复用,提高性能。

    这种模式会带来一些隐藏的副作用,比如可能不会产生过渡效果,或者在某些节点有绑定数据(表单)状态,会出现状态错位。VUE文档也说明了 这个默认的模式是高效的,但是只适用于不依赖子组件状态或临时 DOM 状态 (例如:表单输入值) 的列表渲染输出

    2. 更快

    利用key的唯一性生成map对象来获取对应节点,比遍历方式更快。

    原答案 -----------------------

    vue和react都是采用diff算法来对比新旧虚拟节点,从而更新节点。在vue的diff函数中(建议先了解一下diff算法过程)。
    在交叉对比中,当新节点跟旧节点头尾交叉对比没有结果时,会根据新节点的key去对比旧节点数组中的key,从而找到相应旧节点(这里对应的是一个key => index 的map映射)。如果没找到就认为是一个新增节点。而如果没有key,那么就会采用遍历查找的方式去找到对应的旧节点。一种一个map映射,另一种是遍历查找。相比而言。map映射的速度更快。

    第 2 题:['1', '2', '3'].map(parseInt)

    parseInt(string, radix)    返回解析后的数字。
    参数 描述
    string 必需。要被解析的字符串。
    radix

    可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。

    如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。

    如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。

    当参数 radix 的值为 0,或没有设置该参数时,parseInt() 会根据 string 来判断数字的基数。

    举例,如果 string 以 "0x" 开头,parseInt() 会把 string 的其余部分解析为十六进制的整数。

    map用法详见:https://blog.csdn.net/duyujian706709149/article/details/96270843

    对于每个迭代mapparseInt()传递两个参数: 字符串和基数
    所以实际执行的的代码是:

    ['1', '2', '3'].map((item, index) => {
    	return parseInt(item, index)
    })

    即返回的值分别为:

    parseInt('1', 0) // 1
    parseInt('2', 1) // NaN
    parseInt('3', 2) // NaN , 3 不是二进制

    第 3 题:什么是防抖和节流?有什么区别?如何实现?

    一部分的用户行为会频繁的触发事件执行,而对于DOM操作,资源加载等耗费性能的处理,很有可能导致界面卡顿,甚至浏览器的崩溃,防抖和节流就是解决这种问题的

    1. 防抖

    触发高频事件后n秒内函数只会执行一次,如果n秒内高频事件再次被触发,则重新计算时间

    防抖就是在函数需要频繁触发情况时,只有足够空闲的时间,才执行一次(公交司机等人上齐后才出站)

    • 思路:
    • 每次触发事件时都取消之前的延时调用方法
    function debounce(fn) {
          let timeout = null; // 创建一个标记用来存放定时器的返回值
          return function () {
            clearTimeout(timeout); // 每当用户输入的时候把前一个 setTimeout clear 掉
            timeout = setTimeout(() => { // 然后又创建一个新的 setTimeout, 这样就能保证输入字符后的 interval 间隔内如果还有字符输入的话,就不会执行 fn 函数
              fn.apply(this, arguments);
            }, 500);
          };
        }
        function sayHi() {
          console.log('防抖成功');
        }
    
        var inp = document.getElementById('inp');
        inp.addEventListener('input', debounce(sayHi)); // 防抖

     

    1. 节流

    高频事件触发,但在n秒内只会执行一次,所以节流会稀释函数的执行频率

    函数节流就是预定一个函数只有在大于等于执行周期是才执行,周期内调用不执行(水达到一定程度才滴落)

    • 思路:

    每次触发事件时都判断当前是否有等待执行的延时函数

    function throttle(fn) {
          let canRun = true; // 通过闭包保存一个标记
          return function () {
            if (!canRun) return; // 在函数开头判断标记是否为true,不为true则return
            canRun = false; // 立即设置为false
            setTimeout(() => { // 将外部传入的函数的执行放在setTimeout中
              fn.apply(this, arguments);
              // 最后在setTimeout执行完毕后再把标记设置为true(关键)表示可以执行下一次循环了。当定时器没有执行的时候标记永远是false,在开头被return掉
              canRun = true;
            }, 500);
          };
        }
        function sayHi(e) {
          console.log(e.target.innerWidth, e.target.innerHeight);
        }
        window.addEventListener('resize', throttle(sayHi));

     

    展开全文
  • 每日一题

    2018-11-13 21:22:50
    个二维数组中(每个维数组的长度相同),每行都按照从左到右递增的顺序排序,每列都按照从上到下递增的顺序排序。请完成个函数,输入这样的个二维数组和个整数,判断数组中是否含有该整数。 思路:...

    题目描述:

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

    思路:

    首先遍历行,如果发现查找目标不在本行值域内,就移动到下一行。如果发现目标值在本行的值域内,则依次将本行的每一个元素与查找目标比对。相信和大多数的菜鸟思路一样。但是写完之后总感觉这种方法太蠢,果然看了大佬的代码茅塞顿开。

    代码:

    bool Find(int target,vector<vector<int> > array){
    
    	if(array.empty() || array[0].empty()) return false;
    	int len1 = array.size();
    	int len2 = array[0].size();
    
    	for(int i = 0; i < len1; i++){
    
    		if(target < array[i].front() || target > array[i].back()) continue;
    		for(int j = 0; j < len2; j++){
    			if(target == array[i][j]) return true;
    		}
    
    	}
    	return false;
    }

     

    改进:

    定义row和col指向变量,row指向第一行,col指向最后一列,也就是我们选择的初始比对位置在整个数组的右上角,初始位置这样选择我们一会就能看到这样选择的好处。

    1 5 8 10 15
    2 7 9 11 22
    4 10 20 30 40

     

    假设我们要查找的数字为7

    1 5 8 10 15
    2 7 9 11 22
    4 10 20 30 40

    7<15,显然15这一列的元素全都大于15,那么这一列的元素也全都大于4,这一列可以全部排除,将col前移一位

    1 5 8 10 15
    2 7 9 11 22
    4 10 20 30 40

    7<10,继续将col前移

    1 5 8 10 15
    2 7 9 11 22
    4 10 20 30 40

     

    7<8:

    1 5 8 10 15
    2 7 9 11 22
    4 10 20 30 40

    再次比对我们发现7>5,因为本行中前面的元素都比5小,所以可以将本行的元素全部排除,row下移,到下一行寻找目标值:

    1 5 8 10 15
    2 7 9 11 22
    4 10 20 30 40

    7 == 7,成功找到了这个值!

    这种方法,每一次比对都能排除一整行或者一整列的数据,大大节约了时间。

    代码:

        if(array.empty() || array[0].empty()) return false;
    
    	int row = 0;
    	int col = array[0].size() - 1;
    	int rowLen = array.size();
    
    	while(col >= 0 && row < rowLen){
    		
    		if(array[row][col] == target) return true;
    		else if(target > array[row][col]) row++;
    		else col--;
    		
    	}
    	return false;

     

    展开全文
  • 每日一题(十)

    2020-10-17 11:26:13
    文章目录10.11 函数形参问题10.12 二级指针偏移10.13 #ifdef与#if define 的区别10.14指针实现交换数据时的溢出情况10.15 三目运算的数据转换 10.11 函数形参问题 分析如下程序的输出: void fun(int m, int n) ...
  • 创建了一个网站:每日一题 可以每天看到一个面试题目 http://daily.letechinfo.com/
  • JAVA自学之每日一题(一)

    千次阅读 2016-06-27 10:12:46
    编写个程序,产生个圆心在(0,0),半径为40的圆上面的三个随机点,显示由这三个随机点组成的三角形的三个角的度数。
  • 目录
  • pmp每日一题

    千次阅读 2019-07-31 09:15:48
    2019.7.1 每日一题: A project manager estimates the time and price for a client's project. The client, who is the project manager's close friend, discloses the project's value in a casual meeting. ....
  • 剑指Offer66每日6 - 总结、目录

    千次阅读 多人点赞 2018-02-27 19:12:47
    剑指Offer每日6系列终于在今天全部完成了,从2017年12月27日到2018年2月27日,历时两个月的写作,其中绝大部分的时间不是花在做上,而是花在写作上,这个系列不适合大神,大牛,这个系列是我专门为那些初识算法...
  • 必应每日一图接口

    万次阅读 2020-05-21 18:34:05
    访问网址:http://cn.bing.com/HPImageArchive.aspx?format=js&amp;idx=0&amp;n=1 得到以下的JSON返回数据: { "images": [ { "startdate": "20170704"...endda
  • LeetCode 每日一题 912. 排序数组 C++描述

    千次阅读 多人点赞 2020-03-31 08:14:11
    LeetCode 每日一题 912. 排序数组 难度 中等 给定一个整数数组 nums,将该数组升序排列。 示例 1: 输入:[5,2,3,1] 输出:[1,2,3,5] 示例 2: 输入:[5,1,1,2,0,0] 输出:[0,0,1,1,2,5] 提示: 1 <= A.length &...
  • 博客文章内容导航(实时更新)

    千次阅读 多人点赞 2020-04-26 12:34:27
    大家好,我是亓官劼,qí guān jié ,目前是个计算机科学与技术专业大三的学生,正在努力的学习各项技术中心,向各位大佬学习,同时也在这里记录学习过程中的点点滴滴。从2019年10月开始正式写博客以来也有半年...
  • PMP培训每日一题

    万次阅读 2018-08-28 15:16:18
    为了更好的学习和复习整理了培训机构的每日一题,只做记录和学习使用。 2018.7.2每日一题 A company wants to implement a technological innovation that must be completed by year’s end. The project ...
  • 刷完700多后的首次总结:LeetCode应该怎么刷?

    万次阅读 多人点赞 2020-07-27 21:10:21
    我是大二的时候开始接触LeetCode的,那时候lc只有400,我本来打算每天做,但是由于当时觉得题目太难没坚持下去。在大四考研后和研研二的两年左右的时间,我刷了700多道。那么我是怎么做到的呢? 我打算...
  • 数独每日一题第5题

    千次阅读 2019-06-28 06:37:24
    转载于:https://www.cnblogs.com/webjlwang/p/10602144.html
  • 2018考研数学经验详谈

    万次阅读 多人点赞 2020-02-26 13:04:41
    2018浙大计算机考研经验总述 2018考研408经验详谈 考研数学经验详谈 准备时间:2017年2月20日 基础情况:高考数学145,大学高数,线代几乎全忘光,基本上属于从头开始。...李永乐660选择2遍,填空...
  • 、“无”字的写法  1、应以繁体来写。上面的撇横可连写。顺序是3横再4竖,再4点。  2、3横上短下长,间隔上宽下窄(上宽主要是留出空间给四竖)。第4竖可成撇,撇出横。最后4点,左3点向右,最后一点略大,向...
  • 0 2018校园招聘 2019校园招聘 360 51信用卡 A Apple 爱奇艺 阿里巴巴 amazon B 百度 暴风影音 心得 C 创新工场 D 大数据 滴滴出行 E ebya ...M 每日一算法 美图 美团 陌陌 N 农业银行 P...
  • 今天在浏览一个网站的时候,找到了阿里巴巴的Web前端面试题,然后自己做了下,跟大家分享一下 第一部分:用CSS实现布局 让我们一起来做一个页面 ...于是我们给上一题的布局做一次优化。
1 2 3 4 5 ... 20
收藏数 31,939
精华内容 12,775
关键字:

每日一题