[apprentissage de l'algorithme] 1603. Conception du système de stationnement (Java / C / C + + / python / go / Rust)

Deux chapeaux blancs. 2021-10-28 21:39:38
apprentissage algorithme conception du syst

Merci beaucoup de lire cet article~
Bienvenue【- Oui.】【Collection】【Commentaires】~
Il n'est pas difficile d'abandonner,Mais ça doit être cool d'insister~
J'espère que nous progresserons tous un peu tous les jours~
Cet article est rédigé par Deux chapeaux blancs https://le-yi.blog.csdn.net/ Blog original~



1603. Conception du système de stationnement :

Veuillez concevoir un système de stationnement pour un parking . Il y a trois places de parking différentes dans le parking :Grand, Neutralisant petit , Nombre fixe de places de stationnement par taille .

S'il vous plaît, faites - le. ParkingSystem Catégorie:

  • ParkingSystem(int big, int medium, int small) Initialisation ParkingSystem Catégorie, Trois paramètres correspondent au nombre de places de stationnement .
  • bool addCar(int carType) Vérifiez s'il y a carType Places de stationnement correspondantes . carType Il existe trois types:Grand,Moyenne,Petit,En chiffres séparés 1, 2 Et 3 Représentation. Une voiture ne peut être garée que carType Dans les places de stationnement de la taille correspondante . S'il n'y a pas de place de stationnement disponible ,Veuillez revenir. false , Sinon, garez le véhicule dans le parking et retournez true .

Exemple 1

Entrée:
["ParkingSystem", "addCar", "addCar", "addCar", "addCar"]
[[1, 1, 0], [1], [2], [3], [1]]
Produits:
[null, true, true, false, false]
Explication:
ParkingSystem parkingSystem = new ParkingSystem(1, 1, 0);
parkingSystem.addCar(1); // Retour true ,Parce qu'il y a 1 Grand parking vide
parkingSystem.addCar(2); // Retour true ,Parce qu'il y a 1 Places de stationnement moyennes vides
parkingSystem.addCar(3); // Retour false , Parce qu'il n'y a pas de place de parking disponible
parkingSystem.addCar(1); // Retour false , Parce qu'il n'y a pas de place de parking disponible , Le seul grand parking est déjà occupé.

Conseils

  • 0 <= big, medium, small <= 1000
  • carType La valeur est 1, 2 Ou 3
  • Appelé au plus addCar Fonctions 1000 Une fois

Analyse

  • Ce problème d'algorithme peut être très simple. , Mais pour poursuivre le concept d'optimisation de l'algorithme , Essaie de t'embarrasser. .
  • Trois places de stationnement doivent être comptées , La façon habituelle est trois variables , Si pour l'extensibilité ,Ça pourrait marcherhash Tableau ou tableau .
  • Il y a trois places de parking. , Et le nombre de places de stationnement par type ne dépasse pas 1000(210 Ça suffit. ), Pour que nous puissions utiliser intType( Généralement supérieur ou égal à 32Bits) Variable stocke le nombre de trois places de stationnement .
  • Donc la solution à deux problèmes est de savoir comment une variable stocke trois quantités en utilisant des opérations de bits ( Cette approche n'optimise pas nécessairement l'espace dans n'importe quelle langue ,C'est justeac En même temps que ce problème d'algorithme , Avec une pensée différente ).

Explication du problème

java

class ParkingSystem {

private int counter;
public ParkingSystem(int big, int medium, int small) {

counter = big | medium << 10 | small << 20;
}
public boolean addCar(int carType) {

// Emplacement de la quantité stockée 
int bits = (carType - 1) * 10;
// Quantité actuelle
int cnt = (counter >> bits) & 0b1111111111;
if (cnt > 0) {

// Réduction de la quantité, Plus de 0, Il n'y a donc pas de débit inter - type 
counter -= 1 << bits;
return true;
}
return false;
}
}
/** * Your ParkingSystem object will be instantiated and called as such: * ParkingSystem obj = new ParkingSystem(big, medium, small); * boolean param_1 = obj.addCar(carType); */

c

typedef struct {

int count;
} ParkingSystem;
ParkingSystem* parkingSystemCreate(int big, int medium, int small) {

int count = big | medium << 10 | small << 20;
ParkingSystem *s = (ParkingSystem *) malloc(sizeof(ParkingSystem));
s->count = count;
return s;
}
bool parkingSystemAddCar(ParkingSystem* obj, int carType) {

// Emplacement de la quantité stockée 
int bits = (carType - 1) * 10;
// Quantité actuelle
int cnt = (obj->count >> bits) & 0b1111111111;
if (cnt > 0) {

// Réduction de la quantité, Plus de 0, Il n'y a donc pas de débit inter - type 
obj->count -= 1 << bits;
return true;
}
return false;
}
void parkingSystemFree(ParkingSystem* obj) {

free(obj);
}
/** * Your ParkingSystem struct will be instantiated and called as such: * ParkingSystem* obj = parkingSystemCreate(big, medium, small); * bool param_1 = parkingSystemAddCar(obj, carType); * parkingSystemFree(obj); */

c++

class ParkingSystem {

private:
int counter;
public:
ParkingSystem(int big, int medium, int small) {

counter = big | medium << 10 | small << 20;
}
bool addCar(int carType) {

// Emplacement de la quantité stockée 
int bits = (carType - 1) * 10;
// Quantité actuelle
int cnt = (counter >> bits) & 0b1111111111;
if (cnt > 0) {

// Réduction de la quantité, Plus de 0, Il n'y a donc pas de débit inter - type 
counter -= 1 << bits;
return true;
}
return false;
}
};
/** * Your ParkingSystem object will be instantiated and called as such: * ParkingSystem* obj = new ParkingSystem(big, medium, small); * bool param_1 = obj->addCar(carType); */

python

class ParkingSystem:
def __init__(self, big: int, medium: int, small: int):
self.counter = big | medium << 10 | small << 20
def addCar(self, carType: int) -> bool:
# Emplacement de la quantité stockée 
bits = (carType - 1) * 10
# Quantité actuelle
cnt = (self.counter >> bits) & 0b1111111111
if cnt > 0:
# Réduction de la quantité, Plus de 0, Il n'y a donc pas de débit inter - type 
self.counter -= 1 << bits
return True
return False
# Your ParkingSystem object will be instantiated and called as such:
# obj = ParkingSystem(big, medium, small)
# param_1 = obj.addCar(carType)

go

type ParkingSystem struct {

counter int
}
func Constructor(big int, medium int, small int) ParkingSystem {

return ParkingSystem{
big | medium << 10 | small << 20}
}
func (this *ParkingSystem) AddCar(carType int) bool {

// Emplacement de la quantité stockée 
bits := (carType - 1) * 10
// Quantité actuelle
cnt := (this.counter >> bits) & 0b1111111111
if cnt > 0 {

// Réduction de la quantité, Plus de 0, Il n'y a donc pas de débit inter - type 
this.counter -= 1 << bits
return true
}
return false
}
/** * Your ParkingSystem object will be instantiated and called as such: * obj := Constructor(big, medium, small); * param_1 := obj.AddCar(carType); */

rust

struct ParkingSystem {
counter: i32,
}
/**
* `&self` means the method takes an immutable reference.
* If you need a mutable reference, change it to `&mut self` instead.
*/
impl ParkingSystem {
fn new(big: i32, medium: i32, small: i32) -> Self {
ParkingSystem{counter:big | medium << 10 | small << 20}
}
fn add_car(&mut self, car_type: i32) -> bool {
// Emplacement de la quantité stockée
let bits = (car_type - 1) * 10;
// Quantité actuelle
let cnt = (self.counter >> bits) & 0b1111111111;
if (cnt > 0) {
// Réduction de la quantité, Plus de 0, Il n'y a donc pas de débit inter - type
self.counter -= 1 << bits;
return true;
}
return false;
}
}
/**
* Your ParkingSystem object will be instantiated and called as such:
* let obj = ParkingSystem::new(big, medium, small);
* let ret_1: bool = obj.add_car(carType);
*/

Insérer la description de l'image ici


Porte d'entrée d'origine:https://leetcode-cn.com/problems/design-parking-system/


版权声明
本文为[Deux chapeaux blancs.]所创,转载请带上原文链接,感谢
https://pythonmana.com/2021/10/20211028213435328G.html

  1. python定义列表 新手入门级别
  2. Liste de définition Python débutant
  3. 如何用Python实现,急!!xdm
  4. 如何用Python實現,急!!xdm
  5. Comment implémenter en python, urgent!! Xdm
  6. 新猿木子李:0基础学python培训教程 Python操作Redis之hash类型
  7. python导入模块变量后,打印的值固定不变了,大老们怎么破。
  8. Why is my rust slower than Python!
  9. 用Python给喜欢的女孩写一个办公小工具,她说棒极了!
  10. python中\t是空一个tab,那这个1.2后面怎么没空格?
  11. Il y a un onglet vide en python, alors pourquoi n'y a - t - il pas d'espace après ce 1.2?
  12. 关于python中pygame.display.set_mode()的一点小问题
  13. 猜我能否用Python编程抢到茅台?已经全部开源到GitHub了
  14. python数据分析numpy 补充短试题
  15. 2W + word long article, an article on literacy python, numpy and pandas, recommended collection!
  16. Python培训-自动化运维常用库
  17. On the magical usage and principle of weak reference in Python
  18. Formation python - bibliothèques d'exploitation et de maintenance automatisées
  19. Python培训-HTTP与HTTPS之间的区别
  20. Python有哪些高级特性?
  21. Python代码阅读(第25篇):将多行字符串拆分成列表
  22. Quelles sont les fonctionnalités avancées de python?
  23. 运用python程序编写下面的的代码
  24. Python代码阅读(第25篇):将多行字符串拆分成列表
  25. 初学者 可以帮我看一下为什么Python程序运行不了吗
  26. 初學者 可以幫我看一下為什麼Python程序運行不了嗎
  27. Python代碼閱讀(第25篇):將多行字符串拆分成列錶
  28. Les débutants peuvent - ils m'aider à voir pourquoi le programme Python ne fonctionne pas?
  29. Lecture du Code Python (article 25): diviser les chaînes multilignes en listes
  30. Écrivez le code suivant en utilisant le programme Python
  31. Python exercises
  32. Python exercises
  33. Python exercises
  34. 随机试验数据函数统计分析python
  35. Python after class exercises (junior / October 11, 2021)
  36. python使用cv2.imread()读取图片失败
  37. python使用cv2.imread()讀取圖片失敗
  38. Python n'a pas lu l'image en utilisant cv2.imread ()
  39. Error debugging is accurate to lines, match case pattern matching... The official version of Python 3.10 is really friendly
  40. 100 basic Python interview questions Part II (41-60)
  41. Angry liver half moon! Python learning route + resource summary
  42. 如何用Python编写下列程序
  43. Comment écrire les programmes suivants en python
  44. 熬夜整理了2021年Python最新学习资料,分享给学弟学妹们【大学生必备】
  45. 朋友股票亏惨了,我一怒用Python爬取了证券最新数据
  46. Python爬虫高阶:微店混淆逆向解密
  47. Python爬虫开发学习全教程第二版,爆肝十万字【建议收藏】
  48. 我用Python逆向登录世界上最大的游戏平台,steam加密手段有多高明【内附源码】
  49. 我用Python爬取1000封情书助力室友表白班花,却反转再反转...原来这就是班花的终极秘密!
  50. 我用Python爬取了五千张美女图壁纸,每天一张忘记初恋!
  51. 我Python采集了新榜热门内容,原来这就是别人能成为自媒体大佬的秘密!
  52. 30个Python小游戏,上班摸鱼我能玩一天【内附源码】
  53. 【JS 逆向 AES逆向加密】Python爬虫实战,日子越来越有判头了
  54. python将两个列表进行合并,合并时删除重复元素
  55. J'a i utilisé Python pour accéder aux dernières données sur les titres.
  56. Rester debout tard pour trier les derniers documents d'apprentissage de Python 2021 et les partager avec les étudiants et les jeunes filles [Must for College Students]
  57. python中sklearn版本一直是0.0
  58. La version de sklearn en Python a toujours été 0.0
  59. django 自定义中间件如何忽略部分视图函数
  60. Comment les intergiciels personnalisés Django ignorent certaines fonctions de vue