算法设计与结构基础作业第六周

344.Reverse String

Decription:

Write a function that takes a string as input and returns the string reversed.

Example:
Given s = "hello", return "olleh".

My C++ code:

class Solution {
public:
    string reverseString(string s) {
        int i = 0 ;
        int j = s.size() - 1 ;
        while (i < j)
        {
            swap(s[i] , s[j]) ;
            i ++ ;
            j -- ;
        }
        return s ;
    }
};

442.Find All Duplicates in an Array

Description:

Given an array of integers, 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once.

Find all the elements that appear twice in this array.

Could you do it without extra space and in O(n) runtime?

Example:

Input:
[4,3,2,7,8,2,3,1]

Output:
[2,3]

分析:
      题目很简单,找出一个数组中重复出现了两次的数字。注意时间O(n)。

My C++ Code:

class Solution {
public:
    vector<int> findDuplicates(vector<int>& nums) {
        int length = nums.size() ;
        sort(&nums[0] , &nums[length - 1]) ;
        vector<int> res ;
        int temp = 0 ;
        for(int i = 0 ; i < length - 1 ; i ++)
        {
            if(nums[i] == nums[i + 1])
                res.push_back(1) ;
                res[temp] == nums[i] ;
                temp ++ ;
        }
        return res ;
    }
};

!!!!!:
      这个题目我并没有完全做出来,我的想法是排序之后,比较相邻的两个数字,如果相等就是重复的数字(因为一个数字最多出现两次)。但是一直超时。老师如果看到后希望可以解答。谢谢老师!


一、二叉树(二) 1. 写算法 (1)二叉树的直径定义为从根结点至叶子的最大路径长度。编写算法,求二叉树(二叉链表)的直径。 (2)已知二叉树(二叉链表)根结点指针bt,树中两个结点的指针p、q。编写算法求距离结点*p和*q最近的公共祖先的地址。 (3)已知二叉树(二叉链表)根结点指针bt,利用二叉树叶子结点的rchild指针域将所有叶子结点从左向右连接成一个单向链表。算法返回单向链表头结点指针(即最左边第1个叶子结点的地址)。 2. 编程题 (1) 从键盘输入一个字符串(要求字符串中无重复字符),将串中字符当做完全二叉树的顺序存储结构,建立对应的完全二叉树的二叉链表存储结构输出先、中、后序遍历结果。 (2) 用先序遍历法建立二叉树二叉链表存储结构(结点数据域类型为char,输入字符序列用字符'#'表示NULL),实现中序线索化,并用非递归算法输出中序遍历结果的正序和逆序序列。 二、图 1. 已知某无向图如下图所示。画出该图的多重邻接表存储结构示意图。根据该存储结构写出从顶点v0出发,深度和宽度优先遍历顶点访问次序。 2.写一个算法,判断无向图是否有环。算法提要:深度优先遍历过程中,访问某顶点后,该顶点的邻接点中有已访问的顶点且该已访问邻接点不是该顶点的上一级递归出发顶点(即存在回边),则有环。 3.编程题: 建立无向图邻接表存储结构输出深度和宽度优先遍历顶点访问次序。 4.编程题:建立AOE网络存储结构,计算并输出ve[]和vl[]。 5.选作题*:算法设计-已知AOE网络邻接表存储结构G,ve[]和vl[]已全部求取写出算法输出所有关键路径。要求每条关键路径用源点至汇点的顶点序列(拓扑有序)表示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值