ap模式和sta模式共存_[LeetCode 456]132模式

今日的LeetCode它蹦蹦跳跳地来了。依旧是随机pick的一道题目,难度是中等。

9876b30e221401fec2f5f5bfaba95eea.png

507c5f65d0e910cc436f1b56d8072628.png

首先可以很明确一件事,要想找到一个132模式的子序列,原序列必须包含三个及以上个元素。而且题目中没有让我们把所有的132模式子序列输出,只需要确定有没有就可以了,所以可以利用一些特殊的情况之类的方法来解决。

不过呢,我就不一样了,特殊情况咱也举不出来,所以只好老老实实地按常规步骤走咯。

主要想法是从后往前遍历,寻找符合条件的次大值,然后和次大值进行比较,如果当前元素小于次大值,那么返回true。

如何寻找次大值呢?很简单,如果当前元素大于栈顶元素,那么栈顶元素就是符合条件的次大值,因为栈顶元素和当前元素在原序列中的位置关系是当前元素在前,栈顶元素在后,符合132模式中的32。

所以整个流程应该是这样的:

  1. 申明变量,last表示132模式中的最后一个元素,也就是2,次大值;sta就是上面说的栈了。
  2. 从后往前遍历原序列。
  3. 如果当前元素小于last,即出现132模式中的1,则返回true。
  4. 如果当前元素大于或等于last,则更新last。
  5. 将当前元素压入栈中。

思索了一遍,应该没有要补充的了,所以直接上代码。这次代码分了java和python。

java代码:

class Solution {
    public boolean find132pattern(int[] nums) {
        int n = nums.length;
        int last = Integer.MIN_VALUE; // 132中的2
        Stack<Integer> sta = new Stack<>();// 用来存储132中的3
        if(nums.length < 3)
            return false;
        for(int i=n-1; i>=0; i--){

            if(nums[i] < last) // 若出现132中的1则返回正确值
                return true;

            // 若当前值大于或等于2则更新2(2为栈中小于当前值的最大元素)
            while(!sta.isEmpty() && sta.peek() < nums[i]){
                last = sta.pop();
            }

            // 将当前值压入栈中
            sta.push(nums[i]);
        }
        return false;
    }
}

相关注释也写在上面了,应该是很清晰的。下面是python代码:

class Solution:
    def find132pattern(self, nums: List[int]) -> bool:
        size = len(nums)
        last = -sys.maxsize
        sta = []
        if size < 3:
            return False
        for i in range(size-1,-1,-1):
            if nums[i] < last:
                return True
            while sta and sta[-1] < nums[i]:
                last = sta.pop()
            sta.append(nums[i])
        return False

其实都是一样的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
好的,我理解了你的问题。为了回答你的问题,我将分为两部分进行解答。 首先,关于AP模式STA模式共存问题。一般来说,一个Wi-Fi芯片只能在AP模式STA模式中运行,不能同时在两种模式下运行。但是,有些芯片支持同时在AP模式STA模式下运行,这种功能被称为“SoftAP”或“APSTA模式。如果你的芯片支持这种功能,你就可以同时在AP模式STA模式下运行。 其次,关于如何配置树莓派为WiFi热点(AP模式)。以下是配置树莓派为WiFi热点的步骤: 1. 首先,你需要安装hostapd和dnsmasq软件。你可以使用以下命令进行安装: ``` sudo apt-get install hostapd dnsmasq ``` 2. 接下来,你需要编辑hostapd的配置文件。使用以下命令打开配置文件: ``` sudo nano /etc/hostapd/hostapd.conf ``` 然后,将以下内容添加到配置文件中: ``` interface=wlan0 driver=nl80211 ssid=MyPiHotspot hw_mode=g channel=7 macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_passphrase=MyPiPassword wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP ``` 上述配置文件中,`interface`指定了使用的无线网卡接口,`ssid`指定了热点的名称,`wpa_passphrase`指定了热点的密码。 3. 接下来,你需要编辑dnsmasq的配置文件。使用以下命令打开配置文件: ``` sudo nano /etc/dnsmasq.conf ``` 然后,将以下内容添加到配置文件中: ``` interface=wlan0 dhcp-range=192.168.4.2,192.168.4.20,255.255.255.0,24h ``` 上述配置文件中,`interface`指定了使用的无线网卡接口,`dhcp-range`指定了分配给连接到热点的设备的IP地址范围。 4. 保存并退出配置文件后,你需要启动hostapd和dnsmasq服务。使用以下命令启动服务: ``` sudo service hostapd start sudo service dnsmasq start ``` 如果你希望这两个服务在系统启动时自动启动,可以使用以下命令启用它们: ``` sudo systemctl enable hostapd sudo systemctl enable dnsmasq ``` 5. 最后,你需要将树莓派的无线网卡接口wlan0配置为静态IP地址。使用以下命令编辑网络配置文件: ``` sudo nano /etc/network/interfaces ``` 然后,将以下内容添加到配置文件中: ``` allow-hotplug wlan0 iface wlan0 inet static address 192.168.4.1 netmask 255.255.255.0 network 192.168.4.0 broadcast 192.168.4.255 ``` 6. 保存并退出配置文件后,重启树莓派以使所有更改生效。使用以下命令重启树莓派: ``` sudo reboot ``` 这就是配置树莓派为WiFi热点(AP模式)的步骤。希望能对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值