zoukankan      html  css  js  c++  java
  • c++刷题(27/100)反转单项链表,链表的倒数第k个

    题目1:调整数组顺序使奇数位于偶数前面

    输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

    思路:主要的问题在于不能乱了之前的相对位置,用了两个循环,第一个遍历数组,第二个里面判断是不是奇数,如果是就判断它前面是不是有偶数,有的话就依次和这些偶数交换

    class Solution {
    public:
        void reOrderArray(vector<int> &array) {
            for(int i=0;i<array.size();i++){
                if(array[i]%2!=0){
                    for(int j=i;j>0;j--){
                        if(array[j-1]%2==0){
                            int temp = array[j-1] ;
                            array[j-1] = array[j] ;
                            array[j] = temp ;
                        }else{
                            break ;
                        }
                    }
                }
            }
        }
    };

    题目二:链表中倒数第k个结点

    输入一个链表,输出该链表中倒数第k个结点

    思路:双指针

    /*
    struct ListNode {
        int val;
        struct ListNode *next;
        ListNode(int x) :
                val(x), next(NULL) {
        }
    };*/
    class Solution {
    public:
        ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
            ListNode* p1 = pListHead;
            ListNode* p2 = pListHead;
            while(p1!=NULL){
                if(k==0){
                    p2 = p2->next ;
                    p1 = p1->next ;
                }else{
                    k-- ;
                    p1 = p1->next ;
                }
            }
            if(k!=0) p2 = NULL ;
            return p2 ;
        }
    };

    题目三:反转单项链表

    思路:记录pre和next就行了

    /*
    struct ListNode {
        int val;
        struct ListNode *next;
        ListNode(int x) :
                val(x), next(NULL) {
        }
    };*/
    class Solution {
    public:
        ListNode* ReverseList(ListNode* pHead) {
            ListNode* pre = NULL;
            ListNode* next = NULL;
            while(pHead!=NULL){
                next = pHead->next ;
                pHead->next = pre ;
                pre = pHead ;
                pHead = next ;
            }
            return pre ;
        }
    };
  • 相关阅读:
    数学+高精度 ZOJ 2313 Chinese Girls' Amusement
    最短路(Bellman_Ford) POJ 1860 Currency Exchange
    贪心 Gym 100502E Opening Ceremony
    概率 Gym 100502D Dice Game
    判断 Gym 100502K Train Passengers
    BFS POJ 3278 Catch That Cow
    DFS POJ 2362 Square
    DFS ZOJ 1002/HDOJ 1045 Fire Net
    组合数学(全排列)+DFS CSU 1563 Lexicography
    stack UVA 442 Matrix Chain Multiplication
  • 原文地址:https://www.cnblogs.com/maskmtj/p/9366169.html
Copyright © 2011-2022 走看看