ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ARTS Week 27

2022-02-27 18:01:00  阅读:178  来源: 互联网

标签:Week ARTS 27 ListNode 端口 head next oddNode 节点


Algorithm

本周的 LeetCode 题目为 328. 奇偶链表

给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。

请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。

首先分别奇数和偶数头节点,然后遍历链接,分别找出奇数节点子链表和偶数节点子链表,最后新建一个链表头,分别将奇数和偶数链表连接起来即可。

输入: 1->2->3->4->5->NULL
输出: 1->3->5->2->4->NULL
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode oddEvenList(ListNode head) {
        if (head == null || head.next == null || head.next.next == null) {
            return head;
        }
        ListNode oddDummy = head, oddNode = head;
        ListNode evenDummy = head.next, evenNode = head.next;
        while (oddNode != null && evenNode != null) {
            oddNode.next = evenNode.next;
            oddNode = oddNode.next;
            if (oddNode != null) {
                evenNode.next = oddNode.next;
                evenNode = evenNode.next;
            }
        }
        oddNode = oddDummy;
        while (oddNode.next != null) {
            oddNode = oddNode.next;
        }
        oddNode.next = evenDummy;
        return oddDummy;
    }
}

Review

本周 Review 的英文文章为:什么是端口转发?

端口转发是将网络流量从一个端口发送到同一计算机或不同计算机的另一个端口,特定的端口收到流量后将由特定的网络应用程序来处理,如80端口处理网站请求。本文介绍了如何进行端口转发:

  1. 使用路由器进行端口转发,通过将外部端口设置为1234,内部端口设置为30000,这会将端口1234流量转发到10.0.1.2的端口30000。

  2. 带防火墙的端口转发,你需要使用firewall-cmd命令来转发服务器上的流量:

$ sudo firewall-cmd \
--add-forward-port \
port=80:proto=tcp:toport=8065

要使得更改永久化,需要添加--runtime-to-permanent选项。

  1. 除此之外,例如使用IP转发或设置代理。

Tip

Python中如何调用C语言函数?Python 中有一个 ctypes 库,他可以调用动态链接库或共享库中的函数,因为C语言支持函数重载,为了避免在二进制中发生冲突,因此需要extern来进行修饰。下面是一个示例:

// lib.cpp
#include <iostream>

int Function(int num) 
{
    std::cout << "Num = " << num << std::endl;
    return 0;
}

extern "C" {
    int My_Function(int a)
    {
        return Function(a);
    }
}

使用下面的编译命令将上述代码编译成共享库:

g++ -fPIC -shared -o libTest.so lib.cpp

Python 调用共享库的代码如下:

import ctypes
import sys
import os 

dir_path = os.path.dirname(os.path.realpath(__file__))
handle = ctypes.CDLL(dir_path + "/libTest.so")     

handle.My_Function.argtypes = [ctypes.c_int] 
  
def My_Function(num):
    return handle.My_Function(num)

Python 测试代码如下:

from myLib import *

My_Function(16)

运行结果如下:

$ python3 test.py
Num = 16

Share

生活已逐渐已回到正轨上,过去一周基本上每天都会出去快走or跑步,活动活动锻炼一下,感觉不论何种情况,身体永远是第一位的。

标签:Week,ARTS,27,ListNode,端口,head,next,oddNode,节点
来源: https://www.cnblogs.com/mengxinayan/p/22-02-ARTS27.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有