817. Linked List Components

标定匹配list和对应的链表,首先可以把链表转化为线性表,考虑到Python的dict自带排序效果,引入有序字典OrderedDict,标记字典中已经在G中出现过的为1,未出现过的标记为0.

from collections import OrderedDict
class Solution:
    def numComponents(self, head, G):
        """
        :type head: ListNode
        :type G: List[int]
        :rtype: int
        """
        dict1 = OrderedDict()
        while head is not None:
            dict1[head.val] = 0
            head = head.next
        for index in G:
            dict1[index] = 1
        isbreak = True          #标记前一个是否是断开项
        count = 0
        for part in dict1.values():
            if isbreak:
                if part == 1:
                    count += 1
                    isbreak = False
            else:
                if part == 0:
                    isbreak = True
        return count
#end def

#头文件路径,多个路径分行填充,前一个路径后必须用” \”结束,最后一个路径不带” \” INCDIR = -I../../extern_lib/common_inc\ -I../../extern_lib/cpu_inc\ -I../../extern_lib/cpu_cfg\ -I../../egrp_ble_multi_5515/ble_mbtc/inc\ -I../../egrp_ble_multi_5515/ble_sdk/inc\ -I../../egrp_ble_multi_5515/config -I../../egrp_src\middleware\GR551x_SDK_V2.0.2\components\drivers_ext\gr55xx -I../../egrp_src\middleware\GR551x_SDK_V2.0.2\components\drivers_ext\st7735 -I../../egrp_src\middleware\GR551x_SDK_V2.0.2\components\libraries\fault_trace -I../../egrp_src\middleware\GR551x_SDK_V2.0.2\components\libraries\fcc -I../../egrp_src\middleware\GR551x_SDK_V2.0.2\components\libraries\gui -I../../egrp_src\middleware\GR551x_SDK_V2.0.2\components\libraries\hal_flash -I../../egrp_src\middleware\GR551x_SDK_V2.0.2\components\libraries\hci_uart -I../../egrp_src\middleware\GR551x_SDK_V2.0.2\components\libraries\pmu_calibration -I../../egrp_src\middleware\GR551x_SDK_V2.0.2\components\libraries\ring_buffer -I../../egrp_src\middleware\GR551x_SDK_V2.0.2\components\libraries\sensorsim -I../../egrp_src\middleware\GR551x_SDK_V2.0.2\components\libraries\user_efuse -I../../egrp_src\middleware\GR551x_SDK_V2.0.2\components\libraries\utility -I../../egrp_src\middleware\GR551x_SDK_V2.0.2\components\libraries\virt_key -I../../egrp_src\middleware\GR551x_SDK_V2.0.2\components\libraries\app_alarm -I../../egrp_src\middleware\GR551x_SDK_V2.0.2\components\libraries\app_assert -I../../egrp_src\middleware\GR551x_SDK_V2.0.2\components\libraries\app_error -I../../egrp_src\middleware\GR551x_SDK_V2.0.2\components\libraries\app_key -I../../egrp_src\middleware\GR551x_SDK_V2.0.2\components\libraries\app_linked_list -I../../egrp_src\middleware\GR551x_SDK_V2.0.2\components\libraries\app_log -I../../egrp_src\middleware\GR551x_SDK_V2.0.2\components\libraries\app_memory -I../../egrp_src\middleware\GR551x_SDK_V2.0.2\components\libraries\app_queue -I../../egrp_src\middleware\GR551x_SDK_V2.0.2\components\libraries\app_scheduler -I../../egrp_src\middleware\GR551x_SDK_V2.0.2\components\libraries\app_timer -I../../egrp_src\middleware\GR551x_SDK_V2.0.2\components\libraries\at_cmd -I../../egrp_src\middleware\GR551x_SDK_V2.0.2\components\libraries\ble -I../../egrp_src\middleware\GR551x_SDK_V2.0.2\components\libraries\CMSIS -I../../egrp_src\middleware\GR551x_SDK_V2.0.2\components\libraries\crypto_lib -I../../egrp_src\middleware\GR551x_SDK_V2.0.2\components\libraries\dfu_master -I../../egrp_src\middleware\GR551x_SDK_V2.0.2\components\libraries\dfu_port -I../../egrp_src\middleware\GR551x_SDK_V2.0.2\components\sdk -I../../egrp_src\middleware\GR551x_SDK_V2.0.2\drivers\inc -I../../egrp_src\middleware\GR551x_SDK_V2.0.2\external\segger_rtt -I../../egrp_src\middleware\GR551x_SDK_V2.0.2\platform\arch\arm\cortex-m\cmsis\core\include -I../../egrp_src\middleware\GR551x_SDK_V2.0.2\platform\boards -I../../egrp_src\middleware\GR551x_SDK_V2.0.2\platform\include -I../../egrp_src\middleware\GR551x_SDK_V2.0.2\platform\soc\include 把\按照规则加上
06-13
11-04-2025 19:57:41.649 ERROR [discovery-work-group-6] [] c.t.s.c.c.o.s.KryoUtil(): writeToByteArray error com.esotericsoftware.kryo.KryoException: java.lang.NullPointerException: Cannot invoke "java.util.Map.size()" because "this.m" is null Serialization trace: realComponents (com.tplink.smb.omada.manager.device.port.cache.device.ComponentInfoImagePO) componentInfo (com.tplink.smb.omada.manager.device.port.cache.device.ap.ApImageDescriptionPO) description (com.tplink.smb.omada.manager.device.port.cache.device.ap.WiredApImagePO) cacheObj (com.tplink.smb.component.cache.ohc.dto.Wrapper) at com.esotericsoftware.kryo.serializers.ReflectField.write(ReflectField.java:102) ~[kryo-5.5.0.jar:?] at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:108) ~[kryo-5.5.0.jar:?] at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:642) ~[kryo-5.5.0.jar:?] at com.esotericsoftware.kryo.serializers.ReflectField.write(ReflectField.java:71) ~[kryo-5.5.0.jar:?] at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:108) ~[kryo-5.5.0.jar:?] at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:642) ~[kryo-5.5.0.jar:?] at com.esotericsoftware.kryo.serializers.ReflectField.write(ReflectField.java:86) ~[kryo-5.5.0.jar:?] at com.esotericsoftware.kryo.serializers.CompatibleFieldSerializer.write(CompatibleFieldSerializer.java:107) ~[kryo-5.5.0.jar:?] at com.esotericsoftware.kryo.Kryo.writeClassAndObject(Kryo.java:711) ~[kryo-5.5.0.jar:?] at com.esotericsoftware.kryo.serializers.MapSerializer.write(MapSerializer.java:162) ~[kryo-5.5.0.jar:?] at com.esotericsoftware.kryo.serializers.MapSerializer.write(MapSerializer.java:42) ~[kryo-5.5.0.jar:?] at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:642) ~[kryo-5.5.0.jar:?] at com.esotericsoftware.kryo.serializers.ReflectField.write(ReflectField.java:71) ~[kryo-5.5.0.jar:?] at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:108) ~[kryo-5.5.0.jar:?] at com.esotericsoftware.kryo.Kryo.writeClassAndObject(Kryo.java:711) ~[kryo-5.5.0.jar:?] at com.tplink.smb.component.cache.ohc.serializer.KryoUtil.writeToByteArray(KryoUtil.java:113) ~[solution-components-cache-ohc-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at com.tplink.smb.component.cache.ohc.serializer.CompressdKryoSerializer.serializedSize(CompressdKryoSerializer.java:90) ~[solution-components-cache-ohc-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at com.tplink.smb.component.cache.ohc.serializer.CompressdKryoSerializer.serializedSize(CompressdKryoSerializer.java:21) ~[solution-components-cache-ohc-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at org.caffinitas.ohc.linked.OHCacheLinkedImpl.valueSize(OHCacheLinkedImpl.java:311) ~[ohc-core-0.7.4.jar:?] at org.caffinitas.ohc.linked.OHCacheLinkedImpl.putInternal(OHCacheLinkedImpl.java:251) ~[ohc-core-0.7.4.jar:?] at org.caffinitas.ohc.linked.OHCacheLinkedImpl.put(OHCacheLinkedImpl.java:217) ~[ohc-core-0.7.4.jar:?] at com.tplink.smb.component.cache.ohc.CacheServiceOhcImpl.putHashValue(CacheServiceOhcImpl.java:393) ~[solution-components-cache-ohc-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at com.tplink.smb.omada.manager.port.cache.device.DeviceImageCrudRepositoryMemCacheImpl.save(DeviceImageCrudRepositoryMemCacheImpl.java:117) ~[manager-port-local-6.2.0.5-SNAPSHOT.jar:6.2.0.5-SNAPSHOT] at com.tplink.smb.omada.manager.device.port.cache.device.DeviceImageRepositoryImpl.save(DeviceImageRepositoryImpl.java:112) ~[manager-core-6.2.0.5-SNAPSHOT.jar:6.2.0.5-SNAPSHOT] at com.tplink.smb.omada.manager.device.domain.model.discovery.AbstractDiscoverDeviceService.tryAdoptDeviceInDiscover(AbstractDiscoverDeviceService.java:285) ~[manager-core-6.2.0.5-SNAPSHOT.jar:6.2.0.5-SNAPSHOT] at com.tplink.smb.omada.manager.device.domain.model.discovery.AbstractDiscoverDeviceService.doHandleDeviceInDiscover(AbstractDiscoverDeviceService.java:250) ~[manager-core-6.2.0.5-SNAPSHOT.jar:6.2.0.5-SNAPSHOT] at com.tplink.smb.omada.manager.device.domain.model.discovery.AbstractDiscoverDeviceService.doHandle(AbstractDiscoverDeviceService.java:213) ~[manager-core-6.2.0.5-SNAPSHOT.jar:6.2.0.5-SNAPSHOT] at com.tplink.smb.omada.manager.device.domain.model.discovery.DiscoverManagerService.handle(DiscoverManagerService.java:68) ~[manager-core-6.2.0.5-SNAPSHOT.jar:6.2.0.5-SNAPSHOT] at com.tplink.smb.omada.manager.device.application.discovery.DiscoveryApplicationService.lambda$doHandle$2(DiscoveryApplicationService.java:69) ~[manager-core-6.2.0.5-SNAPSHOT.jar:6.2.0.5-SNAPSHOT] at com.tplink.smb.component.lock.api.AbstractReadWriteLockService.doWithTryLockWrite(AbstractReadWriteLockService.java:142) ~[solution-components-lock-api-1.3.11.jar:1.3.11] at com.tplink.smb.omada.manager.common.lock.ManagerDeviceLockFactory.tryLockWriteWithDefTimeout(ManagerDeviceLockFactory.java:101) ~[manager-core-6.2.0.5-SNAPSHOT.jar:6.2.0.5-SNAPSHOT] at com.tplink.smb.omada.manager.device.application.discovery.DiscoveryApplicationService.doHandle(DiscoveryApplicationService.java:66) ~[manager-core-6.2.0.5-SNAPSHOT.jar:6.2.0.5-SNAPSHOT] at com.tplink.smb.omada.manager.device.application.discovery.DiscoveryApplicationService.handle(DiscoveryApplicationService.java:62) ~[manager-core-6.2.0.5-SNAPSHOT.jar:6.2.0.5-SNAPSHOT] at java.base/java.util.Optional.ifPresent(Optional.java:178) ~[?:?] at com.tplink.smb.omada.manager.device.port.transport.discovery.DiscoveryWatcher.lambda$handleTransResultAsync$1(DiscoveryWatcher.java:119) ~[manager-core-6.2.0.5-SNAPSHOT.jar:6.2.0.5-SNAPSHOT] at org.apache.skywalking.apm.toolkit.trace.RunnableWrapper.run(RunnableWrapper.java:34) [apm-toolkit-trace-9.4.0.jar:9.4.0] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) [?:?] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [?:?] at java.base/java.lang.Thread.run(Thread.java:840) [?:?] Caused by: java.lang.NullPointerException: Cannot invoke "java.util.Map.size()" because "this.m" is null at java.base/java.util.Collections$UnmodifiableMap.size(Collections.java:1498) ~[?:?] at com.esotericsoftware.kryo.serializers.MapSerializer.write(MapSerializer.java:121) ~[kryo-5.5.0.jar:?] at com.esotericsoftware.kryo.serializers.MapSerializer.write(MapSerializer.java:42) ~[kryo-5.5.0.jar:?] at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:642) ~[kryo-5.5.0.jar:?] at com.esotericsoftware.kryo.serializers.ReflectField.write(ReflectField.java:71) ~[kryo-5.5.0.jar:?] ... 38 morepublic class KryoUtil { private static final String DEFAULT_ENCODING = "UTF-8"; private static final Pool<Kryo> pool = new Pool<Kryo>(true, false, 8) { @Override protected Kryo create() { Kryo kryo = new Kryo(); /** * 不要轻易改变这里的配置!更改之后,序列化的格式就会发生变化, * 上线的同时就必须清除所有缓存, * 否则那些缓存再回来反序列化的时候,就会报错 */ //支持对象循环引用(否则会栈溢出) kryo.setReferences(true); //默认值就是 true,添加此行的目的是为了提醒维护者,不要改变这个配置 //不强制要求注册类(注册行为无法保证多个 JVM 内同一个类的注册编号相同;而且业务系统中大量的 Class 也难以一一注册) kryo.setRegistrationRequired(false);//默认值就是 false,添加此行的目的是为了提醒维护者,不要改变这个配置 /** * 注册需要序列化的类 */ kryo.register(List.class); kryo.register(Integer.class); kryo.register(ArrayList.class); kryo.register(Map.class); kryo.register(HashMap.class); kryo.register(Wrapper.class); kryo.register(HashSet.class); kryo.register(ConcurrentHashMap.class); kryo.register(TreeMap.class); kryo.register(LinkedHashMap.class); kryo.register(LinkedHashSet.class); kryo.register(ConcurrentHashMap.KeySetView.class); kryo.register(AtomicLong.class, new AtomicLongSerializer()); //Fix the NPE bug when deserializing Collections. kryo.setInstantiatorStrategy(new DefaultInstantiatorStrategy(new StdInstantiatorStrategy())); // ((DefaultInstantiatorStrategy) kryo.getInstantiatorStrategy()) // .setFallbackInstantiatorStrategy(new StdInstantiatorStrategy()); return kryo; } }; /** * 获得当前线程的 Kryo 实例 * * @return 当前线程的 Kryo 实例 */ public static Kryo getInstance() { return pool.obtain(); } //----------------------------------------------- // 序列化/反序列化对象,及类型信息 // 序列化的结果里,包含类型的信息 // 反序列化时不再需要提供类型 //----------------------------------------------- /** * 将对象【及类型】序列化为字节数组 * * @param obj 任意对象 * @param <T> 对象的类型 * @return 序列化后的字节数组 */ public static <T> byte[] writeToByteArray(T obj) { if (obj != null) { Kryo kryo = getInstance(); ByteArrayOutputStream os = null; Output output = null; try { os = new ByteArrayOutputStream(); output = new Output(os); kryo.writeClassAndObject(output, obj); output.flush(); close(output); return os.toByteArray(); } catch (Exception e) { log.error("writeToByteArray error", e); } finally { pool.free(kryo); close(os); } } return null; } /** * 关闭io流对象 * * @param closeable */ public static void close(Closeable closeable) { if (closeable != null) { try { closeable.close(); } catch (Exception e) { log.error("close error", e); } } } /** * 将字节数组反序列化为原对象 * * @param byteArray writeToByteArray 方法序列化后的字节数组 * @param <T> 原对象的类型 * @return 原对象 */ @SuppressWarnings("unchecked") public static <T> T readFromByteArray(byte[] byteArray) { if (byteArray != null && byteArray.length > 0) { Kryo kryo = getInstance(); ByteArrayInputStream is = null; Output output = null; try { is = new ByteArrayInputStream(byteArray); Input input = new Input(is); return (T) kryo.readClassAndObject(input); } catch (Exception e) { log.error("readFromByteArray error", e); } finally { pool.free(kryo); close(is); close(output); } } return null; } }我试了很多办法都没解决,我的kryo是5.6版本的
最新发布
11-05
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值