首页 > 其他 > 详细

博客作业05--查找

时间:2018-05-26 22:06:08      阅读:237      评论:0      收藏:0      [点我收藏+]

1.学习总结

1.1查找的思维导图

1.2 查找学习体会

2.PTA实验作业

2.1 题目1:6-2 是否二叉搜索树

2.2 设计思路

如果是空树
  返回 true
如果遍历到没有左右子树,递归结束出口
  返回 true
设p为根节点左子树
循环直到让p等于它的最右端
如果此时p的值大于根节点的值
  返回 false
设p为根节点的右子树
循环直到让p等于它的最左端
如果此时p的值小于根节点的值
 返回 false
递归返回 对左子树和右子树的判断

2.3 代码截图

技术分享图片

2.4 PTA提交列表说明。

技术分享图片
部分正确:没有用递归调用判断,开始只是用左右树一个节点与根节点比较导致错误。询问同学后
进行了方法的修改。

2.1 题目2:6-3 二叉搜索树中的最近公共祖先

2.2 设计思路

Find 函数
{
   如果T为空  
     返回0  递归出口
   如果a大于T的值
     就往T的右树寻找
  如果a小于T的值
     就往T的左树寻找
  如果找到
    就返回1
                    }

LCA 函数
{
   如果T为空
     返回error 
  如果树中没有u和v的值
     返回error
  如果u和v一个比T的值大一个小
    T就是他们的共同最近祖先
  如果u和v有一个跟T的值相同
    T就是他们的共同最近祖先
  如果u和v都小于T的值
     就往T的左树寻找
 如果u和v的值都大于T的值
     就往T的右树寻找
                                 }

2.3 代码截图

技术分享图片

2.4 PTA提交列表说明。

技术分享图片

本题没有碰到什么问题

2.1 题目3:7-1 QQ帐户的申请与登陆

2.2 设计思路

输入的字符为‘N‘时
{    判断里面是否有该账号记录
      若没有{  输出ok 并把数据输入}
      若有{ 输出Exist}   }
输入的字符为‘L’时
{      判断里面是否有该账号的记录
         若没有{ 输出 Exist}
         若有{  进一步判断密码是否正确 } }

2.3 代码截图

技术分享图片

2.4 PTA提交列表说明。

技术分享图片
本题没有碰到什么大的问题

3.截图本周题目集的PTA最后排名

本次题目集总分:120

3.1 PTA排名:

技术分享图片

4. 阅读代码

题目:Happy数字,就是给一个正数s, 然后计算它每一个位上的平方和,得到它的下一个数, 然后下一个数继续及选
每位上的平方和……如果一直算下去,没有出现过之前有出现过的数字而出现了1, 那么恭喜,这就是个Happy Number.

class Solution {  
public:  
      
    int calculate(int n)  
    {  
        int squared_sum = 0;  
        while(n)  
        {  
            int tmp = n%10;  
            squared_sum += tmp * tmp;  
            n/=10;  
        }  
        return squared_sum;  
    }  
    bool isHappy(int n)   
    {  
        bool isHappyNum = false;  
        unordered_set<int> mySet;  
        while(true)  
        {  
            //the final num is 1  
            if(n == 1)  
            {  
                isHappyNum = true;  
                break;  
            }  
              
            //a number appears more than once,indicating that falling into a loop with out 1  
            if(mySet.find(n) != mySet.end())  
            {  
                isHappyNum = false;  
                break;  
            }  
              
            mySet.insert(n);  
            //calculate the squared sum of every single digit in n  
            n = calculate(n);  
        }  
          
        return isHappyNum;  
          
    }  
};  


巧妙使用哈希表判断是否陷入了没有1的循环。

博客作业05--查找

原文:https://www.cnblogs.com/lzc176/p/9092816.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!