转转---面试题

Posted shuiyonglewodezzzzz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了转转---面试题相关的知识,希望对你有一定的参考价值。

  下面是几个没有怎么做好的题.

1:对于一个数组,每次随机一个下标,移除对应的位置,怎么保证每次随机下标都有内容移除。

  在每次移除后,把移除的位置后最后一个位置交换,这样就能保证0-----k都有值,然后随机值%k

2:怎么判断一个数是不是2的幂

int check(int n) 
    
        return (n & (n - 1)) == 0;
    

    void solve()
     
        cout << check(10) << " " << check(16) << endl;

    

让n-1,然后按位与。

3:列表反转

#include "pch.h"
#include <string>
#include<iostream>
#include <sstream>
#include<map>
#include<memory.h>
#include<vector>
#include<algorithm>
#include<queue>
#include<vector>
#include<stack>
#include<math.h>
#include<iomanip>
#include<bitset>
#include"math.h"
namespace cc

    using std::cout;
    using std::endl;
    using std::cin;
    using std::map;
    using std::vector;
    using std::string;
    using std::sort;
    using std::priority_queue;
    using std::greater;
    using std::vector;
    using std::swap;
    using std::stack;
    using std::bitset;
    using std::stringstream;



    constexpr int N = 20;
    constexpr int S = 500;

    constexpr int MAXR = 2 * N;
    constexpr int MAXC = 2 * N;

    int check(int n) 
    
        return (n & (n - 1)) == 0;
    

    class Node 
    
    public:
        int val;
        Node* next;
        Node(int val,Node* next) :val(val),next(next)
        
        
    ;

    
    void print(Node* root) 
    
        while (root != nullptr)
        
            cout << " " << root->val;
            root = root->next;
        
        cout << endl;
    

    Node* reverse(Node * root) 
    
        if (root == nullptr)
            return nullptr;
        Node* head = root;
        while (root->next)
        
            Node* next = root->next;
            root->next = next->next;
            next->next = head;
            head = next;
        
        return head;
    

    void solve()
     
        Node* n1 = new Node(1, nullptr);
        Node* n2 = new Node(2, n1);
        Node* n3 = new Node(3, n2);
        Node * root = new Node(4, n3);
        print(root);
        root = reverse(root);
        cout << "反转后的------" << endl;
        print(root);

    

;


int main()


#ifndef ONLINE_JUDGE
    freopen("d://1.text", "r", stdin);
#endif // !ONLINE_JUDGE
    cc::solve();

    return 0;

 上溢到2的幂和下溢2的幂

    
    int flow(int n) 
    
        n = n | n >> 1;

        n = n | n >> 2;

        n = n | n >> 4;

        n = n | n >> 8;

        n = n | n >> 16;
        n++;
        if (n < 0)
            n = n >> 1;//2的30次幂
        return n + 1;
    

    int ceil(int n)
    
        n = flow(n);
        return n >> 1;
    

 

以上是关于转转---面试题的主要内容,如果未能解决你的问题,请参考以下文章

吐血整理50家企业真实大数据面试题!!学长实测,真实面试!!快收藏!

WEB前端面试题

Linux 面试题

2020年1-6月份Java面试题总结,20多类1100道面试题含答案解析

Android面试题Android高级/资深面试题

JAVA面试题合集 JAVA面试题