• Day 40


    第130题:

    给定一个二维的矩阵,包含 'X' 和 'O'(字母 O)。

    找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充。(来自LeetCode)

    1、分析二维矩阵内的哪一部分 O 是被包围的呢;

      其实二维矩阵内有三种类型的字符:第一种是 X ,第二种是被包围的 O ,第三种是没有被包围的 O;

      如果我们需要把被包围的 O 变成 X ,可以转换思路,寻找没有被包围的 O ,然后对这些 O 做上标记;

      再遍历二维矩阵,将矩阵内没有标记的 O 变为 X。

      其中没有被包围的 O 一定存在矩阵的边缘或者和矩阵边缘的 O 相邻,我们只需要遍历矩阵的上下左右四边的位置;

      如果是 O ,将这个 O 变成 A (相当于做标记),再遍历这个位置上下左右是否存在 O ;

      只要有,那它肯定不是被包围的 O ,也变成 A ,这样就可以找出所有的不被包围的 O ;

      最后遍历矩阵,将 A 变回 O ,把 O 变成 X 即可。

      

    第122题:

    给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。

    设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。

    注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。来源:力扣(LeetCode)

    1、为求最大收益,就是把每一次可以得到的收益都累计起来;

      那么当我们买入一只A,遍历下一个B,涨了,卖出,得到收益profit1;

      然后可以看作把卖出的又买回来B,再遍历下一个C,如果没有涨,我们就将手中B的卖出,买下一个C;

      那么这样就相当于把内部的所有利润都累计起来,得出最大利润profit。

      

     2、也可以利用dp[x][y]数组判断此时的持有物(股票或者现金)和此时手中的收益;

      x表示此时手中的收益(可为负数),y表示持有现金或者股票(0:现金,1:股票);

      一开始dp[0][0]表示还没有开始交易,且持有现金;

      当买入第一支股票(价值1)后,就改为dp[-1][1];

      然后遍历整个数组,得出每个位置买入或者卖出后的转台存入dp数组;

      最终得出最大值。

      

    第136题:

    给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

    说明:

    你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗。来源:力扣(LeetCode)

     1、遍历数组,将元素和元素的个数存入hash表,然后遍历hash表,得出个数为1的元素。

      

    2、利用亦或性质,数组中的全部元素的异或运算结果即为数组中只出现一次的数字。

      

     

    class Solution {    public int singleNumber(int[] nums) {        Map<Integer, Integer> map = new HashMap<>();        for (Integer i : nums) {            Integer count = map.get(i);            count = count == null ? 1 : ++count;            map.put(i, count);        }        for (Integer i : map.keySet()) {            Integer count = map.get(i);            if (count == 1) {                return i;            }        }        return -1; // can't find it.    }}
    作者:yinyinnie链接:https://leetcode-cn.com/problems/single-number/solution/xue-suan-fa-jie-guo-xiang-dui-yu-guo-cheng-bu-na-y/来源:力扣(LeetCode)著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 相关阅读:
    Python接口自动化核心模块 数据库操作和日志
    基于数据驱动的接口自动化框架封装
    还在担心漏测吗?快来使用jacoco统计下代码覆盖率
    Mybatisplus 分页查询,总数是如何统计的
    C++ 运算符重载
    C++ 关键字 const
    C++ 拷贝构造
    C++ 之模板
    C++ 引用
    C++ 多态
  • 原文地址:https://www.cnblogs.com/liang-yi-/p/13488281.html
Copyright © 2020-2023  润新知