zoukankan      html  css  js  c++  java
  • Day 45

    第202题:

    编写一个算法来判断一个数 n 是不是快乐数。

    「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为  1,那么这个数就是快乐数。

    如果 n 是快乐数就返回 True ;不是,则返回 False 。来源:力扣(LeetCode)

     1、计算n的下一个得到的数,利用哈希表内是否存在这个数来判断是否这些数进入循环;

      例如当n从一个数10到另一个数10,就说明n没有机会经过计算变成1了,所以返回false;

      如果得到的数不等于1而且哈希表内没有这个数,说明没进入循环,所以将这个数加入哈希表;

      依次计算,最后返回结果。

      

    2、也可以另一种方法判断是否进入循环;

      利用快慢指针来分别指向n的第不同个计算结果,两个指针的移动速度一个快一个慢;

      如果它们进入循环,那么两个快慢指针肯定会在某一刻相等;

      所以当他们不想等时,就一直快慢移动,直到进入循环或者结果=1.

      

    第733题:

    有一幅以二维整数数组表示的图画,每一个整数表示该图画的像素值大小,数值在 0 到 65535 之间。

    给你一个坐标 (sr, sc) 表示图像渲染开始的像素值(行 ,列)和一个新的颜色值 newColor,让你重新上色这幅图像。

    为了完成上色工作,从初始坐标开始,记录初始坐标的上下左右四个方向上像素值与初始坐标相同的相连像素点,接着再记录这四个方向上符合条件的像素点与他们对应四个方向上像素值与初始坐标相同的相连像素点,……,重复该过程。将所有有记录的像素点的颜色值改为新的颜色值。

    最后返回经过上色渲染后的图像。来源:力扣(LeetCode)

     1、首先得记录给定的坐标的颜色值curcolor,便于后面修改颜色;

      如果curcolor==newcolor,就直接返回原来的image数组,因为不需要改变;

      如果两者不相同,将给定坐标加入队列,且将颜色改为newcolor,给定坐标开始遍历它的上下左右四个位置,如果满足要求就加入队列,并且将颜色改为newcolor;

      最终返回结果image。

      (广度优先遍历)

      

      (深度优先遍历)

      

     

  • 相关阅读:
    线程总结(1)
    (转)远程线程DEMO
    VCL 中TList源码分析
    MVC Controller向View传值(ViewData与ViewBag)
    ASP.NET MVC 下拉框的传值的两种方式(第二种方式未完成)
    将数据在[Excel]和[任何数据源]之间导入导出_可临时保存查询结果
    服务器控件之二
    关闭窗口动画,加速窗口
    让XP控制台字符编码在UTF8与GBK之间切换
    WCF应用的编码实现
  • 原文地址:https://www.cnblogs.com/liang-yi-/p/13515168.html
Copyright © 2011-2022 走看看